文档章节

php 正则匹配中文

斑驳
 斑驳
发布于 2014/08/29 16:48
字数 336
阅读 425
收藏 17

正则匹配汉字在不同的编码,不同的程序语言上都有些细微的出入,稍不注意就会得不到正确的结果,特此对比一下 javascript 和 php 的正则匹配汉字,而且 php 中的 gb2312 和 utf-8 两种编码匹配规则还不相同同。

在javascript中,要判断字符串是中文是很简单的:

<script type="text/javascript">
    var str = "我热爱编程";
    if(/^[\u4e00-\u9fa5]+$/ . test(str)) {
        alert("该字符串全部是中文");
    } else {
        alert("该字符串不全部是中文");
    }
</script>

php 匹配 gb2312/gbk 编码汉字的正确写法是:

<?php
    header("Content-type:text/html;charset=gb2312");
    $str = "我热爱编程";
    if(preg_match("/^[".chr(0xa1)."-".chr(0xff)."]+$/", $str)) {// gb2312/gbk
        print("该字符串全部是中文");
    } else {
        print("该字符串不全部是中文");
    }
?>

注:上面的也适用于匹配 gbk 编码汉字,因为 gbk 编码包含了所有 gb2312 编码字符。两种编码的区别请参考:http://blog.csdn.net/raige/article/details/4860035

php 匹配 utf-8 编码汉字的正确写法是:

<?php
    header("Content-type:text/html;charset=utf-8");
    $str = "我热爱编程";
    if(preg_match("/^[\x{4e00}-\x{9fa5}]+$/u", $str)) { // utf-8
        print("该字符串全部是中文");
    } else {
        print("该字符串不全部是中文");
    }
?>

注意别漏写符 u !关于正则表达式修饰符请参考: http://my.oschina.net/banbo/blog/308073

本文转载自:http://blog.sina.com.cn/s/blog_69e1a96d0100vebg.html

斑驳
粉丝 12
博文 57
码字总数 9410
作品 0
深圳
高级程序员
私信 提问
加载中

评论(2)

斑驳
斑驳

引用来自“国栋”的评论

严格来说这只是unicode最主要的一段中文区域,你只要稍加计算就可知这一段大小不过是两万多一点\u4E00-\u9FA5(19968-40869),中文怎么可能只有这两万多字呢?另外这种表示与你是否用UTF-8是没什么关系的,这是一种unicode转义的表示,形式上更接近UTF-16
恩,对的,我也了解到了这点,求指导一下来把这篇文章完善,这样就可以方便更多人。
国栋
国栋
严格来说这只是unicode最主要的一段中文区域,你只要稍加计算就可知这一段大小不过是两万多一点\u4E00-\u9FA5(19968-40869),中文怎么可能只有这两万多字呢?另外这种表示与你是否用UTF-8是没什么关系的,这是一种unicode转义的表示,形式上更接近UTF-16
php 正则匹配中文 utf8编码/^[\x{4e00}-\x{9fa5}A-Za-z0-9_]+$

在javascript中,要判断字符串是中文是很简单的。比如: var str = "php编程"; if (/^[u4e00-u9fa5]+$/.test(str)) { alert("该字符串全部是中文"); } else { alert("该字符串不全部是中文"......

BearCatYN
2015/05/12
0
0
PHP正则匹配汉字

我使用正则表达式来匹配中问的时候,出现了无法匹配的问题,问题如下 PCRE does not support L, l, N{name}, U, or u at offset 2 我原来的匹配公式是: /[u4e00-x9fa5]/ 然后我在网上找的,...

妖尾巴
2018/02/07
0
0
正则表达式使用总结

正则表达式匹配中文 需要使用{} 将编码括起来 xnn :匹配ASCII代码中十六进制代码为nn的字符, 4e00 - 9fa5 是中文编码 /u : 表示按unicode(utf-8)匹配(主要针对多字节比如汉字) 正则表达式匹...

solate
2016/11/15
4
0
PHP 正则表达式匹配 preg_match 与 preg_match_all 函数

正则表达式在 PHP 中的应用 在 PHP 应用中,正则表达式主要用于: 正则匹配:根据正则表达式匹配相应的内容 正则替换:根据正则表达式匹配内容并替换 正则分割:根据正则表达式分割字符串 在...

ywppengpeng
2016/11/14
2
0
PHP怎样用正则匹配中文中括号【xxx】里的内容。

PHP怎样用正则匹配中文中括号【xxx】里的内容。

leondaa
2013/04/01
4.3K
2

没有更多内容

加载失败,请刷新页面

加载更多

FPGA 设备 USB Platform Cable USB

lsusbFuture Technology Devices International, Ltd FT232H Single HS USB-UART/FIFO IC

MtrS
今天
4
0
lua web快速开发指南(6) - Cache、DB介绍

"数据库"与"缓存"的基本概念 数据库与缓存是服务端开发人员的必学知识点. 数据库 "数据库"是一种信息记录、存取的虚拟标记地点的集合统称. 比如现实生活中, 我们经常会用到文件柜、书桌等等数...

水果糖的小铺子
今天
5
0
Oracle分页查询语句的写法

Oracle分页查询语句的写法 Oracle分页查询语句使我们最常用的语句之一,下面就为您介绍的Oracle分页查询语句的用法,Oracle分页查询语句基本上可以按本文给出的格式来进行套用。   Oracle分...

康师傅
昨天
5
0
java并发图谱

1527
昨天
2
0
Mybatis之拦截器Interceptor

使用mybatis时用PageHelper进行分页,用到了PageInterceptor,借此了解下mybatis的interceptor。Mybatis的版本是3.4.6,MybatisHelper的版本是5.1.3。 1、PageInterceptor 先上一段代码,如下...

克虏伯
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部