Объясните это регулярное выражение UTF-8

Этот вопрос задал вопрос о том, как определить строки UTF-8. Как определить, нужно ли применять utf8 для декодирования или кодирования строки?

Решением было следующее:

if (preg_match('!!u', $string)) { // this is utf-8 } else { // definitely not utf-8 } 

Я не смог понять, как разбить выражение «!! u». Я нажал на весь материал PHP PCRE и, возможно, пропустил описание для «!». знаки и «u» -мероприятия. Я попытался запустить его через Perl в YAPE :: Regex :: Объяснение (как видно из объяснения этого регулярного выражения в Perl ) и не смог получить что-то, что имело смысл [я не эксперт perl – не знаю, подал ли я его правое выражение / строка].

Итак … как работает preg_match('!!u', $string) ?

Related of "Объясните это регулярное выражение UTF-8"

Это просто пустое регулярное выражение. ! является разделителем, а u является modfier .

Что касается того, почему это работает, из описания PHP-руководства модификатора u (выделение мое):

Этот модификатор включает дополнительные функции PCRE, которые несовместимы с Perl. Строки шаблонов рассматриваются как UTF-8. Этот модификатор доступен с PHP 4.1.0 или выше в Unix и с PHP 4.2.3 на win32. Срок действия шаблона UTF-8 проверяется с PHP 4.3.5.

! используется как разделитель вместо / . Я переписал это для вас, //u это то же самое. u является модификатором, который обрабатывает шаблон как utf8.