UTF-8正则表达式如何匹配汉字


Posted in PHP onAugust 03, 2015

判断输入内容是否含有违法字符,请看下面代码

$str = "编程";
// if(!preg_match("/^[\x{4e00}-\x{9fa5}A-Za-z0-9_]+$/u",$str)) 
//UTF-8汉字字母数字下划线正则表达式
if(!preg_match("/^[\x{4e00}-\x{9fa5}]+$/u",$str)) //UTF-8汉字字母数字下划线正则表达式
 { 
  echo "<font color=red>您输入的[".$str."]含有违法字符</font>"; 
 }
 else 
 {
  echo "<font color=green>您输入的[".$str."]完全合法,通过!</font>"; 

 }

-----------------------

UTF-8匹配:
在javascript中,要判断字符串是中文是很简单的。

比如:

 var str = "php编程";

 if (/^[\u4e00-\u9fa5]+$/.test(str)) 
{ alert("该字符串全部是中文"); 

}  

else{ alert("该字符串不全部是中文");

 }

php中,是用\x表示十六进制数据的。

于是,变换成如下的代码:

 $str = "php编程"; 

if (preg_match("/^[\x4e00-\x9fa5]+$/",$str)) 

{ 

print("该字符串全部是中文"); 

} 

else { print("该字符串不全部是中文");

}

貌似不报错了,判断的结果也正确,不过把$str换成“编程”两字,结果却还是显示“该字符串不全部是中文”,看来这样的判断还是不够准确。
重要:

查阅了<精通正则表达式>发现,对于[\x4e00-\x9fa5]这块东西,自己做一个强化的解释
php的正则中, [\x4e00-\x9fa5],其实就是  字符和字符组的概念, \x{hex},表达一个16进制数, 需要注意的是hex 可以是1-2位的,也可以是4位的,但是如果是4位的必须加上大括号,
同时,如果是大于x{FF}的hex,必须和u 修饰符连用,不然会非法出错

网上只能找到匹配全角字符的正则:   ^[\x80-\xff]*^/   ,这里可以不加大括号 [\u4e00-\u9fa5]可以匹配中文,但是PHP又不支持     不过,既然\x表示的十六进制数据,为什么和js里边提供的范围\x4e00-\x9fa5不一样呢?

于是我就换成了下边的代码,发现真的准确了:

 $str = "php编程";

 if (preg_match("/^[\x{4e00}-\x{9fa5}]+$/u",$str)) 

{ 

print("该字符串全部是中文"); 

} 

else { print("该字符串不全部是中文");

 }

知道了php中utf-8编码下用正则表达式匹配汉字的最终正确表达式——/^[\x{4e00}-\x{9fa5}]+$/u, 参考以上文章写了如下一段测试代码(复制以下代码保存成.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>

GBK:

preg_match("/^[".chr(0xa1)."-".chr(0xff)."A-Za-z0-9_]+$/",$str); //GB2312汉字字母数字下划线正则表达式

以上内容就是PHP中UTF-8正则表达式如何匹配汉字的全部内容,希望大家喜欢。

PHP 相关文章推荐
PHP自动生成后台导航网址的最佳方法
Aug 27 PHP
php根据isbn书号查询amazon网站上的图书信息的示例
Feb 13 PHP
php中get_meta_tags()、CURL与user-agent用法分析
Dec 16 PHP
php抽象类用法实例分析
Jul 07 PHP
php5.4传引用时报错问题分析
Jan 22 PHP
PHP使用token防止表单重复提交的方法
Apr 07 PHP
PHP获取用户访问IP地址的5种方法
May 16 PHP
一个简单安全的PHP验证码类 附调用方法
Jun 24 PHP
值得分享的php+ajax实时聊天室
Jul 20 PHP
PHP实现的redis主从数据库状态检测功能示例
Jul 20 PHP
PHP实现链式操作的三种方法详解
Nov 16 PHP
PHP实现的只保留字符串首尾字符功能示例【隐藏部分字符串】
Mar 11 PHP
PHP使用缓存即时输出内容(output buffering)的方法
Aug 03 #PHP
php中ob函数缓冲机制深入理解
Aug 03 #PHP
如何利用http协议发布博客园博文评论
Aug 03 #PHP
在CentOS上搭建LAMP+vsftpd环境的简单指南
Aug 01 #PHP
如何使用php实现评委评分器
Jul 31 #PHP
php给图片加文字水印
Jul 31 #PHP
初识通用数据库操作类――前端easyui-datagrid,form(php)
Jul 31 #PHP
You might like
初步介绍PHP扩展开发经验分享
2012/09/06 PHP
PHP输出缓冲控制Output Control系列函数详解
2015/07/02 PHP
Yii2 hasOne(), hasMany() 实现三表关联的方法(两种)
2017/02/15 PHP
利用PHP内置SERVER开启web服务(本地开发使用)
2021/03/09 PHP
JavaScript 对Cookie 操作的封装小结
2009/12/31 Javascript
图像替换新技术 状态域方法
2010/01/28 Javascript
jQuery ui插件的使用方法代码实例
2013/05/08 Javascript
在firefox和Chrome下关闭浏览器窗口无效的解决方法
2014/01/16 Javascript
使用javascript控制cookie显示和隐藏背景图
2014/02/12 Javascript
移动端使用localStorage缓存Js和css文的方法(web开发)
2016/09/20 Javascript
深入理解JavaScript中的并行处理
2016/09/22 Javascript
WebSocket实现简单客服聊天系统
2017/05/12 Javascript
详解webpack之scss和postcss-loader的配置
2018/01/09 Javascript
vue2.0 父组件给子组件传递数据的方法
2018/01/15 Javascript
Vue2.0结合webuploader实现文件分片上传功能
2018/03/09 Javascript
vue实现树形菜单效果
2018/03/19 Javascript
vue2实现搜索结果中的搜索关键字高亮的代码
2018/08/29 Javascript
jQuery实现动画、消失、显现、渐出、渐入效果示例
2018/09/06 jQuery
浅谈VueJS SSR 后端绘制内存泄漏的相关解决经验
2018/12/20 Javascript
elementUI多选框反选的实现代码
2019/04/03 Javascript
JavaScript实现复选框全选和取消全选
2020/11/20 Javascript
JavaScript实现点击自制菜单效果
2021/02/02 Javascript
Python脚本文件打包成可执行文件的方法
2015/06/02 Python
用Django写天气预报查询网站
2018/10/21 Python
Python3 利用requests 库进行post携带账号密码请求数据的方法
2018/10/26 Python
Python设计模式之状态模式原理与用法详解
2019/01/15 Python
对PyQt5中的菜单栏和工具栏实例详解
2019/06/20 Python
用html5的canvas画布绘制贝塞尔曲线完整代码
2013/08/14 HTML / CSS
中学生团员自我评价分享
2013/12/07 职场文书
个人求职信范文分享
2014/01/06 职场文书
大学生创业计划书的范文
2014/01/07 职场文书
个人优缺点自我评价
2014/01/27 职场文书
2014年五四青年节活动方案
2014/03/29 职场文书
巾帼文明岗汇报材料
2014/12/24 职场文书
Python数据类型最全知识总结
2021/05/31 Python
TensorFlow中tf.batch_matmul()的用法
2021/06/02 Python