PHP:匹配奇怪的破折号与preg_match()

时间:2011-06-13 15:59:45

标签: php regex preg-match

我遇到很大问题要匹配这个角色: -

这就是所谓的“en dash”U + 2013(根据http://www.fileformat.info/info/unicode/char/search.htm

它与 - 在我的测试环境(windows和php 5.2.11)中匹配,但在生产服务器(ubuntu和php 5.3.2)上失败。甚至\ x2013在那里失败。

有关如何匹配这个奇怪角色的任何建议吗?或者如何配置php以使其工作?

2 个答案:

答案 0 :(得分:3)

您还可以尝试在表达式上使用“u”标志,使表达式与utf-8兼容:regex pattern modifiers

所以你的表达式是"/[somepatter]/u"

答案 1 :(得分:1)

if (preg_match ('~\xe2\x80\x93~', $string))
{
    echo "En Dash found";
}

我相信你有UTF-8编码,不是吗?