многобайтовая функция для замены preg_match_all? - PullRequest
7 голосов
/ 06 октября 2011

Я ищу многобайтовую функцию для замены preg_match_all(). Мне нужен один, который даст мне массив совпадающих строк, как аргумент $matches из preg_match(). Функция mb_ereg_match(), похоже, не делает этого - она ​​только дает мне логическое значение, указывающее, были ли совпадения.

Глядя на функции mb_ * page , я не вижу ничего, что заменяет функциональность preg_match(). Что я использую?

Редактировать Я идиот. Я первоначально разместил этот вопрос с просьбой о замене preg_match, что, конечно, ereg_match. Однако оба они только возвращают первый результат. Я хотел заменить preg_match_all, которая возвращает все тексты совпадений. Но в любом случае модификатор u работает в моем случае для preg_match_all, как указал Хакре.

Ответы [ 2 ]

12 голосов
/ 06 октября 2011

Вы изучили mb_ereg?

Кроме того, вы можете передать строку в кодировке UTF-8 в preg_match с помощью модификатора u , который может быть той поддержкой многобайтовой поддержки, которая вам нужна. Другой вариант - кодировать в UTF-8, а затем кодировать результаты обратно.

См. Также ответ на связанный вопрос: Безопасен ли многобайтовый PHP preg_functions?

2 голосов
/ 14 февраля 2014

PHP: руководство preg_grep

$matches = preg_grep('/(needles|to|find)/u', $inputArray);

Возвращает массив, проиндексированный с использованием ключей из входного массива.

Обратите внимание на модификатор / u, который включает многобайтовую поддержку.

Надеюсь, что это помогает другим.

...