Страница 1 из 1
несложный regexp php
Добавлено: 2010-07-11 19:42:16
Andrey2009
Код: Выделить всё
if(!preg_match('/^[-_\s\.0-9a-zа-я\"]{1,30}$/i',$user))
- есть такая регулярка. Не понятно одно - почему регэксп работает также когда вожу Большие английские символы, а если ввожу Большие русские символы - то совпадения не срабатывают, приходится в регулярное выражение добавлять А-Я. Модификатор i указан, не могу в толк взять из-за чего не работает
Re: несложный regexp php
Добавлено: 2010-07-12 6:02:36
Andrey2009
еще сюда же вопросик
Код: Выделить всё
if(!preg_match('/^[-_\s\.0-9a-zа-я\"]{1,30}$/i',$user))
отлично ищет совпадения слов в кавычках, например если ввести слово "Бетфор" . Проверял у себя дома на домашнем компе
Прописал этот же регэксп на тестовом сервере на работе - теперь по словам в кавычках совпадения не отрабатываются. На какие настройки обратить внимание?
на работе ОС freebsd 8.0, php5-pcre-5.2.10
Re: несложный regexp php
Добавлено: 2010-07-12 8:46:26
skeletor
Версии php одинаковы на разных машинах?
Re: несложный regexp php
Добавлено: 2010-07-12 9:41:01
Andrey2009
какая подверсия пхп дома не помню, но версия точно php5 и php5-extensions.
Re: несложный regexp php
Добавлено: 2010-07-12 10:17:57
skeletor
Мда...
Если ты не в курсе, то на данный момент существуют версии 5.2 и 5.3, которые имеют достаточно не мало отличий.
Re: несложный regexp php
Добавлено: 2010-07-12 12:39:33
Andrey2009
тут мне на другом форуме сказали гуглить в сторону setlocale + preg_match, так что дело не в версиях php
первая проблемка ушла, а вот вторая не хочет уходить....
Re: несложный regexp php
Добавлено: 2010-07-19 19:23:20
zg
Andrey2009 писал(а):тут мне на другом форуме сказали гуглить в сторону setlocale + preg_match, так что дело не в версиях php
первая проблемка ушла, а вот вторая не хочет уходить....
локаль для однобайтовых кодировок пашет на ура, но с UTF-8 будут проблемы. До выхода шестого пхп, единственный реальный способ работать в UTF-8 - функции mb_*.
Andrey2009 писал(а):а если ввожу Большие русские символы - то совпадения не срабатывают
потому что для русских букв надо задавать отдельно диапазон больших букв и отдельно ёЁ. Примерно так:
Код: Выделить всё
if( !preg_match('/^[-_\s\.0-9a-zа-яА-ЯёЁ\"]{1,30}$/i',$user) )