【问题标题】:PHP UTF8 preg_match output different on live serverPHP UTF8 preg_match 输出在实时服务器上不同
【发布时间】:2013-04-16 11:34:47
【问题描述】:

当使用preg_match('/^[\w-]+$/u', $value) 时,我的开发服务器 (5.3.15) 对于变音符号返回 true。我的实时服务器 (5.3.2-1ubuntu4.19) 返回 false。

我必须做些什么才能使实时服务器的行为与我的开发服务器相同? (不幸的是,我不能简单地更新 php 版本。)

两台机器上的代码完全相同。两者都以 UTF8 格式提供页面。

【问题讨论】:

    标签: php utf-8 preg-match utf


    【解决方案1】:

    \w 被定义为[A-Za-z0-9_] iirc。

    改用preg_match('/^[\pL-]+$/u', $value)

    http://php.net/manual/en/regexp.reference.unicode.php

    【讨论】:

    • 我最终使用了 preg_match('/^[\p{L}\p{N}-]+$/u', $value)
    猜你喜欢
    • 2015-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多