[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Кириллица. preg_replace и utf8
Белый Тигр
Здравствуйте. Имеется вот такое регулярное выражение:
preg_replace('/[^0-9A-Z\xC0-\xFF]/u','',substr($letter,0,1));

Его цель - вернуть первый символ из $letter если он содержит цифры или буквы верхнего регистра (латинские, кириллические). Если он их не содержит, вернётся NULL.
Суть проблемы вот в чём. Изначально флага u в выражении не стояло, и оно спокойно пропускало русские буквы, как мне и нужно. Но вот возвращались они в ужасном нечитаемом виде. Добавил флаг u - буквы перестали обнаружаться :( . Но именно этот флаг должен избавить меня он абракадабры на выходе. Подскажите пожалуйста, на что заменить xC00-xFF? Засада явно где-то тут.
Игорь_Vasinsky
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
мы.. кошачии - должны помогать друг другу...

_____________
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
kirik
Цитата (Игорь_Vasinsky @ 1.12.2010 - 05:55)
мы.. кошачии - должны помогать друг другу...

biggrin.gif

Белый Тигр
Если у вас используется юникод, то обычные строковые функции не будут отрабатывать (точнее будут, но не верно) мультибайтные символы (кириллицу в том числе).
По поводу регулярки посмотрите тут.
Игорь_Vasinsky
ой.... промахнулся совсем.............

_____________
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
Белый Тигр
Всем спасибо. Проблема решена. Вместо
substr($letter,0,1) 

использую
iconv/mb_substr($letter,0,1,'UTF8')

Только вот интересный момент есть. На локальной машине, под Ubuntu, помогает именно iconv-функция. А на рабочем сервере, под FreeBSD, помогает mb_substr.
Не смог пока понять от чего это зависит, но главное что всё заработало :)
И регулярку заменил на
[^0-9\pLu]/u

спасибо kirik :)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.