当前时间: 2010年03月17日, 15:18 你好, 欢迎光临! (登录注册)


发表回复 
 
主题评价:
  • 1 次(票) - 平均星级: 5
  • 1
  • 2
  • 3
  • 4
  • 5
php匹配汉字的正则表达式,utf-8编码和gbk编码
2009年05月15日, 15:00 (这个帖子最后修改于: 2009年05月15日 15:03 by admin.)
php匹配汉字的正则表达式,utf-8编码和gbk编码
/^[\x{4e00}-\x{9fa5}]+$/u

以上这个正则表达式就是困扰了很多php程序员的匹配汉字的正则表达式

大家可能会觉得很简单,实际上不同编码,不同程序语言,都有些细微的出入,稍不注意就得不到正确的结果。

下面是utf-8编码的例子:
程序语言为php
PHP 代码:
$str "MyBB中文站";
if (
preg_match("/^[\x{4e00}-\x{9fa5}]+$/u",$str)) {
print(
"该字符串全部是中文");
} else {
print(
"该字符串不全部是中文");


下面的例子包含gbk,gb2312的用法,需要的可以取消gbk那行的注释,然后把utf-8的注释掉
PHP 代码:
<?php
$action 
trim($_GET['action']);
if(
$action == "sub")
{
    
$str $_POST['dir'];    
    
//if(!preg_match("/^[".chr(0xa1)."-".chr(0xff)."A-Za-z0-9_]+$/",$str)) //GB2312汉字字母数字下划线正则表达式 
    
if(!preg_match("/^[\x{4e00}-\x{9fa5}A-Za-z0-9_]+$/u",$str))   //UTF-8汉字字母数字下划线正则表达式
    
{   
        echo 
"<font color=red>您输入的[".$str."]含有违法字符</font>";   
    }
    else 
    {
        echo 
"<font color=green>您输入的[".$str."]完全合法,通过!</font>";   
    }
}
?>
<form method="POST" action="?action=sub">
输入字符(数字,字母,汉字,下划线):
    <input type="text" name="dir" value="">
    <input type="submit" value="提交">
</form> 

具体如何得出这个正则表达式的,可以参考原文:http://www.diybl.com/course/4_webprogram/php/phpjs/20090302/156831.html
查找这个用户的全部帖子
引用并回复
2010年02月19日, 20:08
RE: php匹配汉字的正则表达式,utf-8编码和gbk编码
php和C语言很像啊~

(见笑了,I'm fresh~)
查找这个用户的全部帖子
引用并回复
发表回复 


论坛跳转:


联系我们 | MyBB中文站 | 回到顶部 | 回到正文区 | 精简(归档)模式 | RSS 聚合