登录注册

18250178511

php识别中文

作者:admin      时间:2017-12-28 13:24:34

我们项目有一个功能是需要匹配中文字符,经过百度搜索等,发现大部分都是通过以下这个正则进行匹配的

/^[\x{4e00}-\x{9fa5}A-Za-z0-9_]+$/u

于是我们也采用了这个正则,一直以来也没有发现什么问题,直到有一天一个用户提供了一个地址里面含有?字,这个规则竟无法匹配

于是,经过查阅资料,我发现以上这个正则并没有办法匹配所有的中文,我找到了以下的资料

基本汉字 20902字 4E00-9FA5
基本汉字补充 38字 9FA6-9FCB
扩展A 6582字 3400-4DB5
扩展B 42711字 20000-2A6D6
扩展C 4149字 2A700-2B734
扩展D 222字 2B740-2B81D
康熙部首 214字 2F00-2FD5
部首扩展 115字 2E80-2EF3
兼容汉字 477字 F900-FAD9
兼容扩展 542字 2F800-2FA1D
PUA(GBK)部件 81字 E815-E86F
部件扩展 452字 E400-E5E8
PUA增补 207字 E600-E6CF
汉字笔画 36字 31C0-31E3
汉字结构 12字 2FF0-2FFB
汉语注音 22字 3105-3120
注音扩展 22字 31A0-31BA
1字 3007
于是只要修改以上规则,添加进其他的一些比较不常用的中文范围,就可以实现匹配中文了,如添加基本汉字补充和扩展A进去,如以下写法


/^[\x{4e00}-\x{9fa5}\x{9fa6}-\x{9fcb}\x{3400}-\x{4db5}A-Za-z0-9]+$/u



发表评论

评论列表

匿名

Well I guess I don't have to spend the weekend figuirng this one out! http://svarpku.com [url=http://wviqcrxiyjb.com]wviqcrxiyjb[/url] [link=http://bwnzpgd.com]bwnzpgd[/link]

2018-11-03 20:22:24

匿名

How neat! Is it really this <a href="http://xzieaxu.com">siempl?</a> You make it look easy.

2018-10-26 22:54:28

匿名

Your story was really intremafivo, thanks!

2018-10-11 13:35:52