Юникод работает в PHP - PullRequest
       20

Юникод работает в PHP

1 голос
/ 06 июля 2011

Может кто-нибудь объяснить, почему весь этот код работает нормально, если PHP должен поддерживать только набор из 256 символов?

Я знаю, что тег Content-Type интерпретирует эти символы, если он находится в UTF-8.Но почему PHP это работает?

echo "匝";

if (preg_match('/啊/', "啊"))
    echo "Match";

if (preg_match('/\w/', "啊"))
    echo "Match";

Ответы [ 2 ]

1 голос
/ 06 июля 2011

Сравните ваш код с:

if (preg_match('/^\w$/', "啊"))
    echo "Match";

regex /\w/ работает, потому что ваш многобайтовый символ содержит 2 байта: 0x53 и 0x1D. И первый, 0x53 выглядит как действительный однобайтовый символ S

PS: это правильный способ сопоставления одной многобайтовой буквы:

var_dump(preg_match('/^\p{L}$/u', "匝", $matches));
0 голосов
/ 06 июля 2011

Скорее всего, ваш PCRE был скомпилирован с включенной поддержкой Unicode (--enable-utf8 --enable-unicode-properties), что приведет к тому, что preg_match () будет соответствовать символам Unicode.

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