Php 在这种情况下,是preg_更换还是mb_ereg_更换?

Php 在这种情况下,是preg_更换还是mb_ereg_更换?,php,unicode,utf-8,preg-replace,multibyte,Php,Unicode,Utf 8,Preg Replace,Multibyte,我使用此正则表达式来匹配Unicode中的空格: /^[\pZ\pC]+|[\pZ\pC]+$/u 我甚至不确定它的作用,但它似乎起作用了。现在,在这种情况下,哪个函数应用得更好,为什么 $str = preg_replace('/^[\pZ\pC]+|[\pZ\pC]+$/u', '', $str); 或 第一个有效。第二个没有 再次尝试,实际上不支持那些Unicode字符转义。而且它不使用正则表达式分隔符。(见附件) 使用PCRE正则表达式引擎,该引擎支持这两种方法 无论如何,没有“更

我使用此正则表达式来匹配Unicode中的空格:

/^[\pZ\pC]+|[\pZ\pC]+$/u
我甚至不确定它的作用,但它似乎起作用了。现在,在这种情况下,哪个函数应用得更好,为什么

$str = preg_replace('/^[\pZ\pC]+|[\pZ\pC]+$/u', '', $str);


第一个有效。第二个没有

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

使用PCRE正则表达式引擎,该引擎支持这两种方法



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

哦,那好吧。我认为mb_ereg_replace作为一个多字节安全函数可以与Unicode一起工作,但我想我错了。谢谢你的回答;)实际上,它应该支持
\p{Any}
转义。多字节字符串感知是Oniguruma的卖点之一。但出于某些愚蠢的原因,它在PHP中不起作用。真奇怪。那么它应该可以工作,但是由于一个bug它不能工作?不管怎样,preg_replace为我工作,所以我会坚持下去。除非有理由在这种情况下使用多字节函数如果您有UTF-8字符串,则建议选择
preg\u replace
。(因为这是它唯一能理解的字符集)。只有当您使用更不常见的编码(UTF-16或什么)时,
mb
才有意义。
$str = mb_ereg_replace('/^[\pZ\pC]+|[\pZ\pC]+$/u', '', $str);