Белый Тигр
1.12.2010 - 14:05
Здравствуйте. Имеется вот такое регулярное выражение:
preg_replace('/[^0-9A-Z\xC0-\xFF]/u','',substr($letter,0,1));
Его цель - вернуть первый символ из $letter если он содержит цифры или буквы верхнего регистра (латинские, кириллические). Если он их не содержит, вернётся NULL.
Суть проблемы вот в чём. Изначально флага u в выражении не стояло, и оно спокойно пропускало русские буквы, как мне и нужно. Но вот возвращались они в ужасном нечитаемом виде. Добавил флаг u - буквы перестали обнаружаться :( . Но именно этот флаг должен избавить меня он абракадабры на выходе. Подскажите пожалуйста, на что заменить xC00-xFF? Засада явно где-то тут.
Игорь_Vasinsky
1.12.2010 - 14:48
iconv_substr() - для UTF вроде
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Игорь_Vasinsky
1.12.2010 - 14:55
мы.. кошачии - должны помогать друг другу...
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Цитата (Игорь_Vasinsky @ 1.12.2010 - 05:55) |
мы.. кошачии - должны помогать друг другу... |
Белый ТигрЕсли у вас используется юникод, то обычные строковые функции не будут отрабатывать (точнее будут, но не верно) мультибайтные символы (кириллицу в том числе).
По поводу регулярки посмотрите
тут.
Игорь_Vasinsky
2.12.2010 - 00:52
ой.... промахнулся совсем.............
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Белый Тигр
2.12.2010 - 10:53
Всем спасибо. Проблема решена. Вместо
substr($letter,0,1)
использую
iconv/mb_substr($letter,0,1,'UTF8')
Только вот интересный момент есть. На локальной машине, под Ubuntu, помогает именно iconv-функция. А на рабочем сервере, под FreeBSD, помогает mb_substr.
Не смог пока понять от чего это зависит, но главное что всё за
работало :)
И регулярку заменил на
[^0-9\pLu]/u
спасибо kirik :)
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.