11

我正在寻找一个多字节函数来替换preg_match_all(). 我需要一个能给我一个匹配字符串数组的$matches函数,比如来自preg_match(). 该功能mb_ereg_match()似乎没有这样做 - 它只给我一个布尔值,指示是否有任何匹配。

查看 mb_* 功能页面,我没有看到任何替代preg_match(). 我用什么?

编辑我是个白痴。我最初发布了这个问题,要求替换preg_match,当然是ereg_match。然而,这两个都只返回第一个结果。我想要的是替换preg_match_all,它返回所有匹配文本。但无论如何,正如 hakre 指出的那样,u修饰符在我的情况下适用于。preg_match_all

4

2 回答 2

16

你看过了mb_ereg吗?

此外,您可以将 UTF-8 编码的字符串传递给preg_match使用u修饰符,这可能是您需要的那种多字节支持。另一种选择是编码为 UTF-8,然后将结果编码回来。

另请参阅相关问题的答案:PHP preg_functions 多字节安全吗?

于 2011-10-06T14:33:34.497 回答
3

PHP: preg_grep 手册

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

返回使用输入数组中的键索引的数组。

注意启用多字节支持的 /u 修饰符。

希望它可以帮助别人。

于 2014-02-14T15:36:58.127 回答