Я ищу многобайтную функцию для замены 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, который поддерживает многобайтовую поддержку.
Надеюсь, это поможет другим.