关于php正则匹配汉字的方法介绍

yipeiwu_com7年前PHP代码库
php正则匹配汉字!

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

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

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

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

下面的例子包含gbk,gb2312的例子:

<?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>

相关文章

PHP使用PDO操作数据库的乱码问题解决方法

本文实例讲述了PHP使用PDO操作数据库的乱码问题解决方法。分享给大家供大家参考,具体如下: 当使用 PDO 连接操作数据库的时候,有时会出现:保存在数据库中的汉字为乱码。以文件为 UT...

php实现网页端验证码功能

我们在实际开发中,会用到短信验证码以及网页验证码,相对来说网页验证码的成本比较低,安全系数也还可以,接下来我们就来做一个网页端的验证码,直接上代码: 首先来说一下文件目录结构:     ...

php数组函数序列之ksort()对数组的元素键名进行升序排序,保持索引关系

ksort()定义和用法 ksort() 函数按照键名对数组升序排序,为数组值保留原来的键。 可选的第二个参数包含附加的排序标志。 若成功,则返回 TRUE,否则返回 FALSE。 语法...

mac os快速切换多个PHP版本的方法

php是为了快速构建一个web页面而迅速被大家广为接受的开源语言,通过不断发展已经有了很多的php开源系统,满足了目前大部分用户的站点需求。1995年初php诞生到现在已经存在多个版本,...

Discuz 5.0 中读取纯真IP数据库函数分析

Discuz  5.0 不在使用自己的IP数据,而是使用纯真IP的数据格式, 存取纯真IP数据库稍微有点麻烦,它的存储格式比较特殊也很有趣,具体的...