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制作静态网站的模板框架(一)
Oct 09 PHP
PHP STRING 陷阱原理说明
Jul 24 PHP
php 解决旧系统 查出所有数据分页的类
Aug 27 PHP
关于PHP内存溢出问题的解决方法
Jun 25 PHP
PHP集成百度Ueditor 1.4.3
Nov 23 PHP
分享下php5类中三种数据类型的区别
Jan 26 PHP
php实现的简单日志写入函数
Mar 31 PHP
基于命令行执行带参数的php脚本并取得参数的方法
Jan 25 PHP
Yii rules常用规则示例
Mar 15 PHP
基于PHP后台的Android新闻浏览客户端
May 23 PHP
基于php实现的php代码加密解密类完整实例
Oct 12 PHP
关于Yii2框架跑脚本时内存泄漏问题的分析与解决
Dec 01 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与MySQL交互使用详解
2006/10/09 PHP
海河写的 Discuz论坛帖子调用js的php代码
2007/08/23 PHP
ThinkPHP中实例Model方法的区别说明
2010/08/21 PHP
php获得用户ip地址的比较不错的方法
2014/02/08 PHP
浅谈php+phpStorm+xdebug配置方法
2015/09/17 PHP
smarty中改进truncate使其支持中文的方法
2016/05/30 PHP
PHP实现的数独求解问题示例
2017/04/18 PHP
php多进程模拟并发事务产生的问题小结
2018/12/07 PHP
取得一定长度的内容,处理中文
2006/12/20 Javascript
两个select之间option的互相添加操作(jquery实现)
2009/11/12 Javascript
node.js中的fs.fsync方法使用说明
2014/12/15 Javascript
jQuery实现的超酷苹果风格图标滑出菜单效果代码
2015/09/16 Javascript
javascript实现不同颜色Tab标签切换效果
2016/04/27 Javascript
AngularJS 表达式详细讲解及实例代码
2016/07/26 Javascript
bootstrap datepicker 与bootstrapValidator同时使用时选择日期后无法正常触发校验的解决思路
2016/09/28 Javascript
JS身份证信息验证正则表达式
2017/06/12 Javascript
vue几个常用跨域处理方式介绍
2018/02/07 Javascript
Vue 自定义标签的src属性不能使用相对路径的解决
2019/09/17 Javascript
解决vue加scoped后就无法修改vant的UI组件的样式问题
2020/09/07 Javascript
[50:44]DOTA2-DPC中国联赛 正赛 SAG vs Dragon BO3 第二场 2月22日
2021/03/11 DOTA
python压缩文件夹内所有文件为zip文件的方法
2015/06/20 Python
python基于pyDes库实现des加密的方法
2017/04/29 Python
python实现批量按比例缩放图片效果
2018/03/30 Python
Python用字典构建多级菜单功能
2019/07/11 Python
CSS3实现类似翻书效果的过渡动画的示例代码
2019/09/06 HTML / CSS
俄罗斯皮肤健康中心:Pharmacosmetica.ru
2020/02/22 全球购物
大学生精神文明先进个人事迹材料
2014/05/02 职场文书
公安机关党的群众路线教育实践活动剖析材料
2014/10/10 职场文书
毕业设计指导教师评语
2014/12/30 职场文书
信访工作个人总结
2015/03/03 职场文书
销售员岗位职责范本
2015/04/11 职场文书
2015社区爱国卫生工作总结
2015/04/21 职场文书
小学教研工作总结2015
2015/05/13 职场文书
天那边观后感
2015/06/09 职场文书
创业计划书之小型广告公司
2019/10/22 职场文书
python爬不同图片分别保存在不同文件夹中的实现
2021/04/02 Python