折雨的天空
php匹配中文标点后续,错误PCRE does not support \L, \l, \N, \P,
2016-5-8 我好笨


网上很多写的匹配中文用\u,实际上会报错。







具体的google一下就行了。







然后,网上资料是将\u改为\x







但这个时候,又会报

preg_replace(): Compilation failed: character value in \x{} or \o{} is too large



而且,还没找到好的应对办法。



那么如何去匹配呢。



网上另外的方案是,将标点符号url编码以后,直接写到preg的正则中,如:




%7E|%60|%21|%40|%23|%24|%25|%5E|%26|%27|%2A|%28|%29|%2B|%7C|%5C|%3D|\-|_|%5B|%5D|%7D|%7B|%3B|%22|%3A|%3F|%3E|%3C|%2C|\.|%2F|%A3%BF|%A1%B7|%A1%B6|%A1%A2|%A1%A3|%A3%AC|%7D|%A1%B0|%A3%BA|%A3%BB|%A1%AE|%A1%AF|%A1%B1|%A3%FC|%A3%BD|%A1%AA|%A3%A9|%A3%A8|%A1%AD|%A3%A4|%A1%A4|%A3%A1
完整程序如下:
$keyword='广’州;海,鲜。餐,厅 ';
$keyword=urlencode($keyword);//将关键字编码
$keyword=preg_replace("/(%7E|%60|%21|%40|%23|%24|%25|%5E|%26|%27|%2A|%28|%29|%2B|%7C|%5C|%3D|\-|_|%5B|%5D|%7D|%7B|%3B|%22|%3A|%3F|%3E|%3C|%2C|\.|%2F|%A3%BF|%A1%B7|%A1%B6|%A1%A2|%A1%A3|%A3%AC|%7D|%A1%B0|%A3%BA|%A3%BB|%A1%AE|%A1%AF|%A1%B1|%A3%FC|%A3%BD|%A1%AA|%A3%A9|%A3%A8|%A1%AD|%A3%A4|%A1%A4|%A3%A1)+/",'',$keyword);
$keyword=urldecode($keyword);//将过滤后的关键字解码
echo $keyword;
//输出结果:广州海鲜餐厅。






发表评论:
昵称

邮件地址 (选填)

个人主页 (选填)

内容