首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >preg_replace + UTF-8在一台服务器上不工作,但在另一台服务器上工作

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

Stack Overflow用户
提问于 2012-04-08 23:14:58
回答 2查看 894关注 0票数 5
代码语言:javascript
运行
复制
echo preg_match("/\b(בדיקה|מילה)\b/iu", "זוהי בדיקה");

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

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-11 18:19:47

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

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

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

Version 8.10 25-Jun-2010:

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

编辑:刚刚做了一些测试,在PHP5.3.10上给出了1,在PHP5.3.2和PHP5.3.3上给出了0。

票数 2
EN

Stack Overflow用户

发布于 2012-04-11 18:25:50

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

尽管如此,它仍然需要PCREv8.10,从PHP5.3.4开始附带,或者在编译标志--with-pcre-regex=DIR中提到。

Ref (in russian)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10063874

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档