日期:2014-05-17  浏览次数:20487 次

php判断是否为中文正则表达式大全(转)

转载自?? http://www.cnblogs.com/DavidYan/articles/2032115.html

?

?

php判断是否为中文正则表达式大全

?

<?php

$str="aaa";
if(!eregi("[^\x80-\xff]","$str"))
{
echo "是";
}
else
{
echo "不是";
}
?>


<?
$str = "中国";
echo $str;
echo "<hr>";

//if (preg_match("/^[".chr(0xa1)."-".chr(0xff)."]+$/", $str)) { //只能在GB2312情况下使用
if (preg_match("/^[\x7f-\xff]+$/", $str)) { //兼容gb2312,utf-8
echo "正确输入";
} else {
echo "错误输入";
}
?>


如果想判断一个字符串内是否有含有中文,请用下面的代码:

if (preg_match("/[\x7f-\xff]/", $string)) {
echo "有中文";
}else{
echo "没有中文";
}

判断中文和编码有关 gbk是双字节,utf8是三字节,可以根据中文的范围来判断???

?

编码范围1. GBK (GB2312/GB18030)???
\x00-\xff GBK双字节编码范围???
\x20-\x7f ASCII???
\xa1-\xff 中文???
\x80-\xff 中文??
??
2. UTF-8 (Unicode)???
\u4e00-\u9fa5 (中文)???
\x3130-\x318F (韩文???
\xAC00-\xD7A3 (韩文)???
\u0800-\u4e00 (日文)???
ps: 韩文是大于[\u9fa5]的字符???
正则例子:???
preg_replace(”/([\x80-\xff])/”,”",$str);??
preg_replace(”/([u4e00-u9fa5])/”,”",$str);???

?

?

  1. //判断内容里有没有中文-GBK?(PHP)????? ??
  2. function ?check_is_chinese( $s ){????? ??
  3. ????? return ?preg_match( '/[\x80-\xff]./' ,? $s );????? ??
  4. }????? ??
  5. ??? ??
  6. //获取字符串长度-GBK?(PHP)????? ??
  7. function ?gb_strlen( $str ){????? ??
  8. ????? $count ?=?0;????? ??
  9. ????? for ( $i =0;? $i < strlen ( $str );? $i ++){????? ??
  10. ????????? $s ?=? substr ( $str ,? $i ,?1);????? ??
  11. ????????? if ?(preg_match( "/[\x80-\xff]/" ,? $s ))?++ $i ;????? ??
  12. ???????????++ $count ;????? ??
  13. ?????}????? ??
  14. ????? return ?