Я знаю, что функции PHP PCRE обрабатывают строки как байтовые последовательности, поэтому многие сайты предлагают использовать модификатор /u
для обработки ввода и регулярных выражений как UTF-8.
Но действительно ли мне это нужно всегда?Мои тесты показывают, что этот флаг не имеет значения, когда я не использую escape-последовательности или точки или что-то вроде этого.
Например
preg_match('/^[\da-f]{40}$/', $string);
, чтобы проверить, имеет ли строка форматхэш SHA1
preg_replace('/[^a-zA-Z0-9]/', $spacer, $string);
для замены каждого символа, не являющегося буквой ASCII или числом
preg_replace('/^\+\((.*)\)$/', '\1', $string);
для получения внутреннего содержимого +(XYZ)
Эти регулярные выражения содержаттолько однобайтовые символы ASCII, поэтому он должен работать на каждый ввод, независимо от кодировки, не так ли?Обратите внимание, что в третьем регулярном выражении используется оператор точки, но, поскольку я обрезал некоторые символы ASCII в начале и конце строки, это должно работать и в UTF-8, верно?
Не может ли кто-нибудь сказать мне, если я пропускаючто-то?