我正在寻找一个替换preg_match_all()
的多字节函数。我需要一个能给我一系列匹配字符串的字符串,比如来自$matches
的{{1}}参数。函数preg_match()
似乎没有这样做 - 它只给我一个布尔值,表明是否有任何匹配。
查看mb_ *函数page,我不会随便看到取代mb_ereg_match()
功能的任何内容。我该用什么?
编辑我是个白痴。我最初发布此问题要求替换preg_match()
,当然是preg_match
。但是这两者都只返回第一个结果。我想要的是替换ereg_match
,它会返回所有匹配文本。但无论如何,preg_match_all
修饰符适用于我u
的情况,正如hakre指出的那样。
答案 0 :(得分:12)
您是否看过mb_ereg
?
此外,您可以使用u
modifier将UTF-8编码的字符串传递到preg_match
,这可能是您需要的多字节支持。另一种选择是编码为UTF-8,然后对结果进行编码。
请参阅相关问题的答案:Are the PHP preg_functions multibyte safe?
答案 1 :(得分:2)
$matches = preg_grep('/(needles|to|find)/u', $inputArray);
返回使用输入数组中的键索引的数组。
注意启用多字节支持的/ u修饰符。
希望它可以帮助他人。