регулярные выражения , китайский

программирование php регулярные выражения

Подскажите, как найти в строке иероглиф, например,
尺 Unicode 5C3A

$char = "尺";
echo (preg_match("/^[\5C3A]*$/i", $char) ? "Found" : "Not Found");

Не работает
Ответы:
попробуй рядом с i еще и u поставить, т.е.
echo (preg_match("/^[\5C3A]*$/iu", $char) ? "Found" : "Not Found");
так же попробуй такие варианты
Регулярнке нужно явно сообщить, что строка в UTF у вас. Для этого используется модификатор u
Ну и собственно помимо синтаксиса регулярок нужно помнить синатксис PHP: слеш в регулярке требуется для экранирования символа. Но регулярку вы задаете строкой, а в строках PHP, определяемых в исходном коде, слеш также служит для экранирования.
Поэтому ваша маска /^[\5C3A]*$/i в памяти будет выглядеть как /^[5C3A]*$/i (\5 = 5)
Чтобы слеш остался в строке, нужно его экранировать:
/^[\\5C3A]*$/ui
Тогда в памяти будет нужная маска: /^[\5C3A]*$/ui
И уже в маске дополнительно сработает экранирование символов по правилам регулярных выражений, что и даст нужный результат.


12 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.