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

use*_*841 8 php regex multibyte multibyte-functions

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

查看mb_*函数页面,我不会随便看到替代功能的任何东西preg_match().我该用什么?

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

hak*_*kre 12

你看过了mb_ereg吗?

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

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

  • `u`修饰符是正确的答案.避免使用`ereg_`(和`mb_ereg_`)函数,因为它们已被弃用. (4认同)