preg_replace函数+ UTF-8没有一台服务器上的工作,但工作在另一个(preg_repl

2019-09-16 10:37发布

echo preg_match("/\b(בדיקה|מילה)\b/iu", "זוהי בדיקה");

出于某种原因,这个编码一个特定的服务器上返回1对多台服务器,我测试了,但0。

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

Answer 1:

有可能是PCRE版本的PHP应用之间的区别。

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

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

8.10版25军2010:

  1. 新增PCRE_UCP使\ B,\ d,\ S,\ w和某些POSIX字符类使用Unicode属性。 (* UCP)在模式的开始可用来设置此选项。 修改pcretest添加/ W测试这个工具。 新增REG_UCP使通过POSIX接口可用它。

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



Answer 2:

这可能取决于PCRE LIB的版本。 为了使事情更加规范化,请尝试使用«UCP动词»: preg_match('/(*UCP)\b(בדיקה|מילה)\b/iu', 'זוהי בדיקה')

不过它需要PCRE V8.10,因为5.3.4 PHP运或在编译标志时提到--with-pcre-regex=DIR

参考文献(俄语)



文章来源: preg_replace + UTF-8 doesn't work on one server but works on another