Я ищу многобайтную функцию для замены preg_match_all()
. Мне нужен тот, который даст мне массив согласованных строк, например аргумент $matches
matches из preg_match()
. Функция mb_ereg_match()
, похоже, не делает этого – это только дает мне логическое значение, указывающее на наличие совпадений.
Глядя на страницу функций mb_ *, я не вижу ничего, что заменяет функциональность preg_match()
. Что я использую?
Редактировать Я идиот. Я изначально отправил этот вопрос с просьбой о замене preg_match
, что, конечно же, ereg_match
. Однако оба они возвращают только первый результат. То, что я хотел, было заменой для preg_match_all
, которая возвращает все тексты соответствия. Но в любом случае модификатор u
работает в моем случае для preg_match_all
, как указал Хакре.
Вы заглянули в mb_ereg
?
Кроме того, вы можете передать кодированную строку UTF-8 в preg_match
используя модификатор u
, который может быть поддержкой типа многобайта. Другой вариант – кодировать в UTF-8, а затем кодировать результаты обратно.
См. Также ответ на соответствующий вопрос: безопасны ли PHP preg_functions?
PHP: руководство preg_grep
$matches = preg_grep('/(needles|to|find)/u', $inputArray);
Возвращает массив, индексированный с использованием ключей из входного массива.
Обратите внимание на модификатор / u, который поддерживает многобайтовую поддержку.
Надеюсь, это поможет другим.