PHP: RegEx vs ctype_ *

2 Cevap php

Birkaç ay önce, you Benim isAlpha & için mükemmel bir çözüm sağladı sorunları co. Ctype_ * fonksiyonlar artık kendi işini yapmak gibi görünüyor olsa Ama bir kez daha, ben, (sürüm 5.2.9 için) PHP yükselttikten sonra sorunlar koştu:

ctype_alpha( $value ) /* VS */ preg_match("/^[\p{L} _.\-]+$/u",    $value)

ctype_alnum( $value ) /* VS */ preg_match("/^[\p{L}0-9 _.\-]+$/u", $value)

Sorunları, ben 'GB' veya 'blablue' yani doğru ctype_alpha() ile alfa olarak tanımlanan, ancak preg_match("/^[\p{L} _.\-]+$/u", $value) ile başarısız olduğu anlamına gelir.

Bana herhangi bir fikir varsa, bazı ciddi googling sonra onları dışarı koştu bildiriniz ..

Çok, çok teşekkürler!

P.S. LANG / LC_CTYPE / etc iki ortamlarda hem en_US.UTF-8 ayarlanır

2 Cevap

PCRE UTF-8 desteği yanı sıra Unicode özellik desteği ile derlenmiş emin olun.

if ( ! @preg_match('/^.$/u', 'ñ'))
    echo 'PCRE has not been compiled with UTF-8 support.';

if ( ! @preg_match('/^\pL$/u', 'ñ'))
    echo 'PCRE has not been compiled with Unicode property support.';

Dan Çekler http://github.com/kohana/kohana/blob/master/install.php.

Ben bir hosting sunucusunda Unicode meta karakter kullanarak bir regex ile bazı sorun vardı. Kısacası Sayı: çalışmıyor. Bu geçici bir sunucu beri gerçek nedenine araştırmak değildi, ama senin sorunun benzer görünüyor gibi unicode desteği içine bakmak olabilir.