在这种情况下是 preg_replace 还是 mb_ereg_replace?

fed*_*o-t 5 php unicode utf-8 preg-replace multibyte

我有这个正则表达式用于匹配 Unicode 中的空格:

/^[\pZ\pC]+|[\pZ\pC]+$/u
Run Code Online (Sandbox Code Playgroud)

我什至不确定它的作用,但它似乎有效。现在,在这种情况下,哪个函数更适用,为什么?

$str = preg_replace('/^[\pZ\pC]+|[\pZ\pC]+$/u', '', $str);
Run Code Online (Sandbox Code Playgroud)

或者

$str = mb_ereg_replace('/^[\pZ\pC]+|[\pZ\pC]+$/u', '', $str);
Run Code Online (Sandbox Code Playgroud)

mar*_*rio 4

第一个有效。第二个没有。

再次尝试,实际上并不支持那些 Unicode 字符转义。而且它不使用正则表达式分隔符。(参见Onigurumamb_ereg_replace

preg_replace使用 PCRE 正则表达式引擎,它支持两者。


无论如何,不​​存在“更好”的应用程序。它要么起作用,要么不起作用。

  • 如果您有 UTF-8 字符串,那么“preg_replace”是建议的选项。(因为这是它理解的唯一字符集)。仅当您使用更不常见的编码(UTF-16 或其他编码)时,“mb_”才有意义。 (3认同)