已掉线,重新登录

首页 > 绿虎论坛 > 历史版块 > 编程 > PHP > 教程

标题: 正则与UTF-8汉字:你理解[\x{4e00}-\x{9fa5}]吗?

作者: @Ta

时间: 2012-05-13

点击: 3368

    使用 preg_match('!^[\x{4e00}-\x{9fa5}]+$!u',$str) 可以精确地鉴定UTF-8编码的字符串是否全部是汉字。
    以前我虽然知道这么用,但是从没有理解过。UTF-8的汉字不是三字节吗?但4e00和9fa5却只有两字节啊,怎么匹配?我同样不解,模式修饰符u到底意味着什么?
    于是我开始百度,终于看到这样一句话,“从Unicode编码表(中日韩字)可以看出,汉字的编码是从4e00到9fa5”。
    Unicode编码?对啊,Unicode编码正好是两字节的。4e00是汉字“一”,而9fa5是繁体显示不出来。
    这样一来,模式修饰符u的作用就清楚了。它很可能是把UTF-8的字符串转成Unicode字符串来匹配了(匹配后输出结果时再转成UTF-8)。

[隐藏样式|查看源码]


『回复列表(6|隐藏机器人聊天)』

1. 不太懂,
使用 preg_match('!^[\x{4e00}-\x{9fa5}]+$!u',$str)这是什么意思,怎么用,谢谢
(/@Ta/2012-05-13 16:39//)

2. @建站小菜  就是这样用啊,preg_match(…)这个表达式已经说得很清楚了。如果你完全不理解,但是有兴趣,你可以去学php。如果你学过php,那么你可以去百度一下preg_match的用法。
(/@Ta/2012-05-13 16:42//)

3. 哦,谢谢老虎,原来是php用的,我还不会php,谢谢解答
(/@Ta/2012-05-13 16:48//)

4. 有空再看,
(/@Ta/2012-05-13 16:56//)

5. 那么你说的贪滥模式是你乱吹的?@老虎会游泳 
(/@Ta/2012-05-13 17:25//)

6. @胡鹏  取消贪婪模式是用大写的U
(/@Ta/2012-05-13 18:01//)

回复需要登录

9月22日 20:02 星期一

本站由hu60wap6驱动

备案号: 京ICP备18041936号-1