文章目录

PHP正则匹配中日韩文过滤乱码特殊字符

前段时间在百度site网站收录量的时候,发现一个严重的问题,搜索结果里面有许多带乱码的搜索结果页。

因为网站的搜索页是允许被蜘蛛抓取的,所以一旦有搜索就相当于生成了一个新的页面。

但是这却被有心人利用了,故意制造了许多乱码页面。

是什么样的乱码呢?下面截图就是。

乱码

之前一直是strip_tags和addslashes结合使用,没想到遇到这种乱码毫无对策。

于是就在网上搜了一下“PHP正则表达式乱码”,后来找到一个方法,如下:


preg_match("/^[x{4e00}-x{9fa5}A-Za-z0-9_]+$/u",$str)


试了一下,乱码的确是可以过滤掉,但是韩文、日文这些也被过滤了,也就是说上面这个正则表达式是专门用于匹配简体中文的正则表达式

这并不是我要的结果,我要的只是把乱码过滤,但是其他的仍然保留,后来又查阅了相关资料,进行了改进,代码如下:


preg_match("/^[x{2E80}-x{D7FF}A-Za-z0-9_]+$/u",$str)


上面的一些地方可能有些会不了解,下面有详细的说明。

2E80~33FFh:中日韩符号区。收容康熙字典部首、中日韩辅助部首、注音符号、日本假名、韩文音符,中日韩的符号、标点、带圈或带括符文数字、月份,以及日本的假名组合、单位、年号、月份、日期、时间等。

3400~4DFFh:中日韩认同表意文字扩充A区,总计收容6,582个中日韩汉字。

4E00~9FFFh:中日韩认同表意文字区,总计收容20,902个中日韩汉字。

A000~A4FFh:彝族文字区,收容中国南方彝族文字和字根。

AC00~D7FFh:韩文拼音组合字区,收容以韩文音符拼成的文字。

F900~FAFFh:中日韩兼容表意文字区,总计收容302个中日韩汉字。

FB00~FFFDh:文字表现形式区,收容组合拉丁文字、希伯来文、阿拉伯文、中日韩直式标点、小符号、半角符号、全角符号等。

以上就是在php中使用正则表达式匹配中日韩文过滤特殊乱码字符的方法,希望对大家有用。

本文网址:http://www.santii.com/article/247.html

数据更新时间:2021-04-17