preg_replace + UTF-8在一台服务器上不起作用,但在另一台服务器上起作用

Lio*_*ior 5 php utf-8 preg-replace

echo preg_match("/\b(?????|????)\b/iu", "???? ?????");
Run Code Online (Sandbox Code Playgroud)

出于某种原因,此代码在我测试过的几台服务器上返回1,但在一台特定服务器上返回0.

PCRE编译时支持UTF-8和Unicode属性.可能是什么问题?

Nak*_*aki 2

PHP 使用的 PCRE 版本之间可能存在差异。

PHP 和 PCRE 版本:http://php.net/pcre.installation

您应该使用 8.10+ (PHP 5.3.4+)

版本 8.10 2010 年 6 月 25 日:

  1. 添加了 PCRE_UCP 以使 \b、\d、\s、\w 和某些 POSIX 字符类使用 Unicode 属性。模式开头的 (*UCP) 可用于设置此选项。修改 pcretest 添加 /W 来测试此功能。添加了 REG_UCP 以使其可通过 POSIX 接口使用。

编辑: 刚刚做了一些测试,它在 PHP 5.3.10 上给出 1,在 PHP 5.3.2 和 PHP 5.3.3 上给出 0。