开发者社区> 问答> 正文

PHP一段正则表达式匹配结果不一致的问题

落地花开啦 2016-06-17 16:13:52 977

我自定的函数如下,功能是匹配出特殊字符:

function hasSpecialChar($subject) {
    $pattern = "/[`~!@#$%^&*()+=|{}':;',\\[\\].<>\/?~!@#¥%……&*()——+|{}【】‘;:”\"“’。,、?]/";

    if (preg_match($pattern, $subject)) {
        return true;
    }

    return false;
}

我的结果:

var_dump(hasSpecialChar('问答社区')); // boolean true
var_dump(hasSpecialChar('Segmentfault')); // boolean false
var_dump(hasSpecialChar('@Segmentfault')); // boolean true

可以从第一个结果中看出是'问答社区'这个中文字符串被匹配出了特殊字符,但是我在Rubular上匹配'问答社区'则匹不出特殊字符,请问是不是我哪里写错了?还是preg_match函数的为题呢?一直找不到原因。

路过的大哥们帮帮忙,谢谢。

PHP
分享到
取消 提交回答
全部回答(1)
  • 落地花开啦
    2019-07-17 19:43:00

    PHP如果需要处理中文正则,请一定使用小写字母U
    如把你的代码改成 这个即可

    $pattern = "/[`~!@#$%^&*()+=|{}':;',\\[\\].<>\/?~!@#¥%……&*()——+|{}【】‘;:”\"“’。,、?]/u";

    不过我经常这样干

    $pattern = "/[`~!@#$%^&*()+=|{}':;',\\[\\].<>\/?~!@#¥%……&*()——+|{}【】‘;:”\"“’。,、?]/isu";
    0 0

集结各类场景实战经验,助你开发运维畅行无忧

推荐文章
相似问题
推荐课程