php中utf 8编码下用正则表达式如何匹配汉字
需要用的php的正规匹配汉字,在网上找了些文章看了以下,看到这个的时候感觉这篇文章写的很真实,忍不住转过来了。
原文地址:http://hi.baidu.com/comdeng/blog/item/f272362e47ce29564ec226c5.html
在javascript中,要判断字符串是中文是很简单的。比如:
var str = "php编程";
if (/^[\u4e00-\u9fa5]+$/.test(str)) {
alert("该字符串全部是中文");
} else {
alert("该字符串不全部是中文");
}
想当然的,在php中来判断字符串是否为中文,就会沿袭这个思路:
<?php
$str = "php编程";
if (preg_match("/^[\u4e00-\u9fa5]+$/",$str)) {
print("该字符串全部是中文");
} else {
print("该字符串不全部是中文");
}
?>
不过,很快就会发现,php并不支持这样的表达,报错:
Warning
: preg_match() [function.preg-match
]: Compilation failed: PCRE does not support \L, \l, \N, \U, or \u at offset 3 in test.php
on line 3
刚开始从google上查了很多次,想从php正则表达式对于十六进制数据的表达方式上进行突破,发现在php中,是用\x表示十六进制数据的。于是,变换成如下的代码:
$str = "php编程";
if (preg_match("/^[\x4e00-\x9fa5]+$/",$str)) {
print("该字符串全部是中文");
} else {
print("该字符串不全部是中文");
}
貌似不报错了,判断的结果也正确,不过把$str换成“编程”两字,结果却还是显示“该字符串不全部是中文”,看来这样的判断还是不够准确。
后来跑回百度搜“php 匹配汉字 utf 8
”,发现文章的匹配程度竟然要比google的高多了,看来百度的“百度更懂中文”还在一定程度上是正确的。在第二篇文章《★★★ 求UTF8下匹配汉字的正则, 在线等.........
》中看到了如下的一些内容:
楼主zhiin(┈ Jcan ┈)2006-11-15 15:59:30 在 Web 开发 / PHP 提问
求UTF8下匹配汉字的正则, 不包括全角字符及特殊符号!
网上只能找到匹配全角字符的正则: ^[\x80-\xff]*^/
[\u4e00-\u9fa5]可以匹配中文,但是PHP又不支持
郁闷中.......
1 楼PleaseDoTellMeWhy(Allah bless you!)回复于 2006-11-15 16:04:55
相关文档:
为什么微博客系统都是用的php做的
一:php有一系列很简单高效的原生模板支持函数.博客系统一般情况下都需要用到模板.而php的模板支持能力,可以有效降低网站模板的开发.
二:同时php的这一些列支持函数都是原生支持,并非外挂支持,更不需要模板开发人员专门开发一套脚本级的处理方法.php的这些支持都是c语言级的支持.运行速度 ......
最近帮实验室完善一个CMS系统,现在已经进入尾声,借此机会简要记录一下实现的细节,以备所需。
本系统是个纯粹的在线内容管理系统,最主要的操作就是向数据库中添加、修改和删除数据,应该说实现起来很简单,不过正是因为简单,使得原有系统显得很难维护,简单类似的操作有20多个不同的页面,每个页面 ......
在php中计算时间差有时候是件麻烦的事!不过只要你掌握了日期时间函数的用法那这些也就变的简单了:
一个简单的例子就是计算借书的天数,这需要php根据每天的日期进行计算,下面就来谈谈实现这种日期计算的几种方法:
(1) 如果有数据库就很容易了!若是MSSQL可以使用触发器!用专门计算日期差的函数datediff()便可 ......
原文链接:http://www.phpdo.net/index.php/2010/01/25/29/
学习了一段时间PHP,觉得有点收获。也应该将学过的东西拿出来晒晒了,不然就交回给课本了。
PHP是什么呢?
PHP,是超级文本预处理语言(PHP:Hypertext Preprocessor)的缩写。PHP 是一种 HTML 内嵌式的语言,是一种在服务器端执行的嵌入HTML文档的脚本语言,语 ......