php preg_split hata preg_split kadar bölünmüş geçerken

2 Cevap php

Php 5.3 uyumluluğu için preg_split için bölünme gelen değişiklikten sonra php bu uyarı alıyorum:

PHP Warning:  preg_split(): Delimiter must not be alphanumeric or backslash

php kodu:

$statements = preg_split("\\s*;\\s*", $content);

Artık kullanmak değil regex nasıl düzeltebilirim \

Teşekkürler!

2 Cevap

Eğer düzenli ifadenin etrafında bir ayraç karakteri gerekir çünkü hatadır.

$statements = preg_split("/\s*;\s*/", $content);

Soru soruluyor sonra cevap iki dakika olarak etiketlenmiş olmasına rağmen, ben kayıtları için bazı bilgiler eklemek istiyorum.

Dizeleri tırnak işaretleri ile ayrılmış benzer şekilde, Perl veya JavaScript gibi birçok dilde, düzenli ifadeler, eğik çizgilerle sınırlandırılır. Bu, bu gibi bakıyor ifadeler yol açacaktır:

/\s*;\s*/

Bu sözdizimi nitelemeler belirlemenizi sağlar:

/\s*;\s*/Ui

PHP'nin Perl uyumlu düzenli ifadeler (aka preg_ ... fonksiyonlar) Bu miras. Ancak, PHP kendisi kadar () bir ayrıştırma hatası getireceğini /\s*;\s*/ ile preg_split besleyen bu sözdizimi desteklemiyor. Bunun yerine, normal bir dize oluşturmak için tırnak içine alın.

Dikkate almanız gereken bir şey daha PHP ayırıcısını değiştirmek için izin vermesidir. Örneğin, bu kullanabilirsiniz:

@\s*;\s*@Ui

Bunun için iyi nedir? Bunları kaçmak gerekmez çünkü eğik çizgilerle inside ifadesi kullanımı kolaylaştırır. Karşılaştırın:

/^\/home\/.*$/i
@^/home/.*$@i