PHP PCRE(正则表达式)不支持UTF-8?

时间:2010-01-21 04:17:25

标签: php regex ssh pcre

我正在尝试在我的网站上运行正则表达式,我收到了这个回复:

  

编译失败:支持\ P,   \ p和\ X尚未编译   抵消1

谷歌搜索了一下后,我发现显然我服务器上的PCRE没有启用UTF8,因此导致问题。当我用pcretest-s ssh时,我得到了

PCRE版本6.6 06-Feb-2006

  

使用UTF-8支持编号   Unicode属性支持Newline   字符是LF内部链接大小=   2 POSIX malloc threshold = 10
  默认匹配限制= 10000000
  默认递归深度限制=   10000000匹配递归使用堆栈

当我更新pcre时,它告诉我没有任何更新。

人们告诉我,我可以启用UTF-8支持...帮助?

我是个菜鸟。

3 个答案:

答案 0 :(得分:3)

有一个关于重建pcre here的RPM的好教程。

如果你向下滚动到“更新的RPM文件......”你会发现一些预先构建的RPM,如果你只是想让它工作(记得在你完成后重启Apache,而不仅仅是优雅的重新加载)

tl; dr版本是:使用--enable-utf8--enable-unicode-properties重新编译pcre

答案 1 :(得分:3)

Yum现在应该在其存储库中找到v6.6.6.el5_6.1个PCRE,因此执行yum update pcre会在Centos 5上为我解决问题。

答案 2 :(得分:1)

PHP不使用“pcre”应用程序/包。 PCRE支持内置于PHP库中。您收到的错误告诉您,您的PHP库未使用PCRE UTF-8支持进行编译。

您需要使用使用正确的UTF-8选项构建的适当PCRE静态库重新编译PHP。