用于替换preg_match_all的多字节函数?

时间:2011-10-06 14:18:41

标签: php regex multibyte multibyte-functions

我正在寻找一个替换preg_match_all()的多字节函数。我需要一个能给我一系列匹配字符串的字符串,比如来自$matches的{​​{1}}参数。函数preg_match()似乎没有这样做 - 它只给我一个布尔值,表明是否有任何匹配。

查看mb_ *函数page,我不会随便看到取代mb_ereg_match()功能的任何内容。我该用什么?

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

2 个答案:

答案 0 :(得分:12)

您是否看过mb_ereg

此外,您可以使用u modifier将UTF-8编码的字符串传递到preg_match,这可能是您需要的多字节支持。另一种选择是编码为UTF-8,然后对结果进行编码。

请参阅相关问题的答案:Are the PHP preg_functions multibyte safe?

答案 1 :(得分:2)

PHP: preg_grep manual

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

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

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

希望它可以帮助他人。