echo preg_match("/\b(בדיקה|מילה)\b/iu", "זוהי בדיקה");
出于某种原因,此代码在我测试过的几台服务器上返回1,但在一台特定服务器上返回0。
PCRE编译时支持UTF-8和Unicode属性。可能是什么问题?
答案 0 :(得分:2)
PHP使用的PCRE版本可能存在差异。
PHP和PCRE版本:http://php.net/pcre.installation
您应该使用8.10+(PHP 5.3.4 +)
- 添加了PCRE_UCP以生成\ b,\ d,\ s,\ w和某些POSIX字符类 使用Unicode属性。可以使用模式开头的(* UCP)进行设置 这个选项。修改了pcretest以添加/ W来测试此工具。添加 REG_UCP使其可通过POSIX接口使用。
醇>
修改强> 刚做了一些测试,它在PHP 5.3.10和PHP 5.3.2和PHP 5.3.3上给出了1。
答案 1 :(得分:1)
它可能取决于PCRE lib的版本。为了使事情更加规范化,请尝试使用“UCP动词”:preg_match('/(*UCP)\b(בדיקה|מילה)\b/iu', 'זוהי בדיקה')
。
仍然需要PCRE v8.10,自5.3.4开始随PHP一起提供,或者在编译标志--with-pcre-regex=DIR
中提到时。