完善匹配中文的Php正则表达式
来源:互联网 发布:win10如何修改mac地址 编辑:程序博客网 时间:2024/05/17 06:20
1. 笼统的使用元字符匹配中文,/.*?/s,可匹配一段中文,这在ANSI(gb2312)和utf-8环境的程序代码都可以实现。但提醒一下,\w不能匹配中文。曾在一本《精通正则表达式》(人民邮电出版社,沙金编著)书上看到可以使用\w匹配中文,这里纠正一下用php不行。可以使用”/./”,” /[^\d]/”,”/[^a]/”,匹配中文字符。
2. 如果要精准匹配中文,即匹配纯中文字符,或匹配中文字符加上全角标点,则需要根据不同编码环境使用不同方法。下面以两种常用的编码(gb2312,utf-8)进行介绍:
在 ANSI(gb2312)环境下,可使用[chr(0xnn)-chr(0xmm)]的方式匹配,如在一篇网文上就提供这样的方法,”/[".chr(0xb0)."-".chr(0xf7)."]+/”,这是可以使用的,但这太过笼统,这个表达式是匹配全部的gb2312编码表的字符,既包括汉字、标点、日文平假名等,还有一些不知是什么符号的。而从编码表可以看出汉字的编码范围是0xb0a1-0xf7fe,并且gb2312 是用两个字节进行编码的,每个字节最高位都是1 。所以可以藉此写出单纯匹配汉字的正则式:
"/([".chr(0xb0)."-".chr(0xf7)."][".chr(0xa1)."-".chr(0xfe)."])/" ,该表达式能匹配一个中文字符,数量关系就可以容易扩展了。
并且举一反三,如果想匹配全角标点而不匹配中文就可以这样写:
"/([".chr(0xa1)."-".chr(0xa3)."][".chr(0xa1)."-".chr(0xff)."])/",就是匹配编码范围0xa1a1-0xa3ff内的符号。其他的类似。
3. 下面介绍utf-8环境下中文的匹配。类似于上面,也可以使用unicode编码表来确定中文的匹配。由编码表可以看出,中文的编码范围是0x4e00-0x9fa5,于是正则式可以这样写:
"/[\x{4e00}-\x{9fa5}]/u" ,\x{nnnn}表示字符的十六进制形式,更多信息请自己查看php手册。要特别注意的是模式修正符u ,php手册里这样说:u(PCRE_UTF8) 此修正符启用了一个 PCRE 中与 Perl 不兼容的额外功能。模式字符串被当成 UTF-8。本修正符在 Unix 下自 PHP 4.1.0 起可用,在 win32 下自 PHP 4.2.3 起可用。自 PHP 4.3.5 起开始检查模式的 UTF-8 合法性。这正是正确匹配所必须的。其实也想提醒一下,是utf-8环境使用元字符匹配字符串最好加上修正符u,这只是经验。
下面给两个例子:
(1) ANSI编程环境下:
$strtest = “yyg中文字符yyg”;
$pregstr = "/([".chr(0xb0)."-".chr(0xf7)."][".chr(0xa1)."-".chr(0xfe)."])+/i";
if(preg_match($pregstr,$strtest,$matchArray)){
echo $matchArray[0];
}
//output:中文字符
(2) Utf-8编程环境下:
$strtest = “yyg中文字符yyg”;
$pregstr = "/[\x{4e00}-\x{9fa5}]+/u";
if(preg_match($pregstr,$strtest,$matchArray)){
echo $matchArray[0];
}
//output:中文字符
0
上一篇:项目回顾 (今天才能上网……都快忘了 )
下一篇:【分享】sphinx的小技巧三则(最大记录数、高亮、搜索排序)
相关热门文章
- 《数字技术与应用》征稿**投稿...
- 信用卡(Visa.Master)在线收...
- AAA软件教育学院java短期培训...
- 分年龄除皱 找对方法事半功倍...
- 太阳城开户
- 毕业五年(续)
- 毕业五年
- 职业生涯规划
- 中国软件开发工程师之痛...
- 闲置书处理!
- 大家都是用什么来管理hadoop集...
- 网站被人挂了吗,添加了些程序...
- Nginx如何保证不走宕机的那个...
- 大家谈谈MYSQL客户端和服务器...
- 以下代码运行后为何会输出5?...
给主人留下些什么吧!~~
评论热议
- 完善匹配中文的Php正则表达式
- 完善匹配中文的Php正则表达式
- 完善匹配中文的Php正则表达式
- 完善匹配中文的Php正则表达式(转)
- [转]完善匹配中文的Php正则表达式
- 完美匹配中文的Php正则表达式
- PHP匹配中文的正则表达式
- php 正则表达式匹配中文的例子
- php 正则表达式 匹配中文
- php正则表达式匹配中文
- php 正则表达式匹配中文
- PHP 正则表达式匹配中文
- PHP正则表达式匹配中文
- PHP正则表达式匹配中文
- PHP 正则表达式 匹配中文
- PHP匹配UTF-8中文字符的正则表达式
- js 和 php 正则表达式匹配中文是不同的
- php匹配中文_英文_数字的正则表达式
- 分享个小框架---MioPHP
- 当我遇见你的时候
- 拆掉思维里的墙,原来我还可以这样活---读书笔记
- 卡内基《每日一智》---我们在智慧中成长
- 项目回顾 (今天才能上网……都快忘了 )
- 完善匹配中文的Php正则表达式
- 【分享】sphinx的小技巧三则(最大记录数、高亮、搜索排序)
- 第一个项目结束有感!
- 嫁程序员是本世纪最增值的投资,有木有呀!!!
- 这一段代码用到最近学的三个知识点哈大家一起来研究哈
- 这篇作文我语文老师给了我十五分,觉得该给十六分的请表示一下支持!!
- 给自己一个充实自己的机会
- switch与ifelse的效率问题
- 强强老师的Linux那点事
原创粉丝点击
热门IT博客
热门问题
老师的惩罚
人脸识别
我在镇武司摸鱼那些年
重生之率土为王
我在大康的咸鱼生活
盘龙之生命进化
天生仙种
凡人之先天五行
春回大明朝
姑娘不必设防,我是瞎子
英语戏剧剧本
小情景剧剧本
话剧剧本短篇
校园剧本大全
相声大全剧本
6人搞笑小品剧本
校园小品剧本
剧本格式范文
童话话剧剧本大全
校园话剧剧本
宝儿读剧本吧
中国剧本联盟
情景剧剧本范文
童话话剧剧本
中国国际剧本网
舞台剧剧本怎么写
情景剧剧本怎么写
搞笑小品剧本大全
心理剧剧本怎么写
动画剧本怎么写
话剧剧本怎么写
小品剧本怎么写
英语话剧剧本大全
心理情景剧剧本大全
英语话剧剧本
剧本要怎么写
获虎之夜剧本
编剧网
中国编剧网
主角又要抢我剧本
超级搞笑小品剧本
短篇搞笑小品剧本
六人搞笑小品剧本
幽默搞笑小品剧本
励志搞笑小品剧本
简短搞笑小品剧本
青春搞笑小品剧本
二人搞笑小品剧本
两人搞笑小品剧本
幼儿搞笑小品剧本
经典搞笑小品剧本