php判断是否有中文字符的两种方法
1个回答
展开全部
1、用正则判断是否为中文的代码
(1)文件为GB2312格式:
<?PHP
$str= 'incode';
//$str= '程序设计';
if (!preg_match("/^[".chr(0xa1)."-".chr(0xff)."]+$/", $str))
{
echo '请您使用中文,谢谢!';
}?>
(2)文件为UTF-8格式:
把正则判断改为://if(preg_match("/([/x4e00-/x9fa5])/",$str, $arr) )
2、使用php中的mb_strlen和strlen函数判断 <!-- [if gte mso 10]>
方法比较简单:分别使用以上两个函数以当前编码测出字符的返回值,然后比较返回值。
返回值相等的为纯英文、纯数字、英数混排;
返回值不等,且strlen返回值可被mb_strlen整除的为纯汉字
返回值不等,且strlen返回值不可被mb_strlen整除的为英汉或数汉混排
代码如下:
<?php
$strarray[1] = "hello";
$strarray[2] = "123456";
$strarray[3] = "123hello";
$strarray[4] = "你好";
$strarray[5] = "123你好";
$strarray[6] = "hello你好";
$strarray[7] = "123hello你好";
foreach ($strarray as $ke=>$value) {
$x = mb_strlen($value,'gb2312');
$y = strlen($value);
echo $strarray[$ke].' <span style="color: #ff0000;" mce_style="color: #ff0000;">'.$x.'</span> <span style="color:#ff0000;" mce_style="color:#ff0000;">'.$y.'</span>';
}?>
输出结果:hello 5 5 123456 6 6 123hello 8 8你好 4 6 123你好 7 9hello 你好 9 11 123hello你好 12 14
(1)文件为GB2312格式:
<?PHP
$str= 'incode';
//$str= '程序设计';
if (!preg_match("/^[".chr(0xa1)."-".chr(0xff)."]+$/", $str))
{
echo '请您使用中文,谢谢!';
}?>
(2)文件为UTF-8格式:
把正则判断改为://if(preg_match("/([/x4e00-/x9fa5])/",$str, $arr) )
2、使用php中的mb_strlen和strlen函数判断 <!-- [if gte mso 10]>
方法比较简单:分别使用以上两个函数以当前编码测出字符的返回值,然后比较返回值。
返回值相等的为纯英文、纯数字、英数混排;
返回值不等,且strlen返回值可被mb_strlen整除的为纯汉字
返回值不等,且strlen返回值不可被mb_strlen整除的为英汉或数汉混排
代码如下:
<?php
$strarray[1] = "hello";
$strarray[2] = "123456";
$strarray[3] = "123hello";
$strarray[4] = "你好";
$strarray[5] = "123你好";
$strarray[6] = "hello你好";
$strarray[7] = "123hello你好";
foreach ($strarray as $ke=>$value) {
$x = mb_strlen($value,'gb2312');
$y = strlen($value);
echo $strarray[$ke].' <span style="color: #ff0000;" mce_style="color: #ff0000;">'.$x.'</span> <span style="color:#ff0000;" mce_style="color:#ff0000;">'.$y.'</span>';
}?>
输出结果:hello 5 5 123456 6 6 123hello 8 8你好 4 6 123你好 7 9hello 你好 9 11 123hello你好 12 14
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询