巧妙运用mb_strlen函数区分字符串中是否包含中文

前几天的工作中有次遇到个问题,我负责开发一块类似织梦中内容模版的功能。允许用户输入字段名来建立字段,但字段名是不可以使用中文的。那如何来判断用户输入的值中是否含有中文呢?我试用了如下的办法。

[cc lang="php"]

$str = "12345abcdef";
$x = mb_strlen($str,’gb2312′);
$y = strlen($str);
echo "{$str} <br />{$x} <br />{$y} <br /><br />";
$str = "12345abcdef_";
$x = mb_strlen($str,’gb2312′);
$y = strlen($str);
echo "{$str} <br />{$x} <br />{$y} <br /><br />";

$str = "一二三123ABC";
$x = mb_strlen($str,’gb2312′);
$y = strlen($str);
echo "{$str} <br />{$x} <br />{$y} <br /><br />";

$str = "一二三四五六七";
$x = mb_strlen($str,’gb2312′);
$y = strlen($str);
echo "{$str} <br />{$x} <br />{$y} <br /><br />";

$str = "一a二b";
$x = mb_strlen($str,’gb2312′);
$y = strlen($str);
echo "{$str} <br />{$x} <br />{$y} <br /><br />";

[/cc]

代码之后结果如下

我们可以看到。两个函数对中文字符处理的结果是有差异的,由此,我们可以判断,如果两个函数对同一字符串的执行结果不相等时,则该字符串包含中文。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

You must enable javascript to see captcha here!