您的位置:首页 > 编程语言 > PHP开发

php utf-8编码 正则匹配中文

2014-07-09 11:35 423 查看
首先unicode里面 中文的区域的0x4e00-0x9fa5

在java或者js这种已unicode编码处理字符串的编程语言中

/^[\u4e00-\u9fa5]+$/就可以判断一个字符串是否全部为中文

那么php中 字符的编码根据页面而定

页面是gbk的 字符编码就是gbk的 utf-8也同理

之前有一个表达式 “/^[\x80-\xff]+$/”

仅仅可以匹配是否含有非ascll字符

而汉字只是其中一个比较小的区域 不太精确

由于我的页面编码是utf-8的

于是把js的表达式搬到php中来

提示PCRE不支持”\u”和其他乱七八糟的一大堆东西

后来查资料了解到 php的正则有一种叫做字符组的东西

用\x{…}表示

于是把表达式改成”/^[\x{4e00}-\x{9fa5}]+$/”

又提示”\x”表达式后的数字太大

又查了资料 了解到可以使用修正模式”u” 让程序把后面当成unicode字符处理

于是改成了”/^[\x{4e00}-\x{9fa5}]+$/u” 测试成功

所以php下正则匹配中文的表达式是 “/^[\x{4e00}-\x{9fa5}]+$/u”

这个仅适用于utf-8编码
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: