PHP: RegEx против ctype_ * - PullRequest
       13

PHP: RegEx против ctype_ *

3 голосов
/ 20 декабря 2009

Несколько месяцев назад вы предоставили идеальное решение для моих проблем с IsAlpha & co. Но еще раз, я столкнулся с проблемами после обновления PHP (до версии 5.2.9), хотя функции ctype_ *, кажется, делают свою работу сейчас:

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

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

Под проблемами я подразумеваю, что 'GB' или 'blablue', т. Е. Правильно обозначается как альфа с помощью ctype_alpha(), но завершается неудачно с preg_match("/^[\p{L} _.\-]+$/u", $value).

Пожалуйста, дайте мне знать, если у вас есть идеи, я выбежал из них после некоторого серьезного поиска в Google ..

Большое, большое спасибо!

P.S. LANG / LC_CTYPE / etc установлен на en_US.UTF-8 в обеих средах

Ответы [ 2 ]

4 голосов
/ 22 декабря 2009

Убедитесь, что PCRE скомпилирован с поддержкой UTF-8, а также с поддержкой свойств Unicode.

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.';

Чеки от http://github.com/kohana/kohana/blob/master/install.php.

0 голосов
/ 20 декабря 2009

У меня возникла проблема с регулярным выражением, использующим метасимволы Юникода на хост-сервере. Проблема вкратце: это не работает. Я не исследовал истинную причину, поскольку это был временный сервер, но вы можете посмотреть на поддержку юникода, поскольку ваша проблема кажется похожей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...