php 统计计算中文汉字字数代码
本文章来给大家介绍一些常用见的php 统计计算中文汉字字数代码,有需要了解的朋友可进入参考.
用ASCII码判断,代码如下:
<?php $str = "abcdefg中华人民共和国中国人民解放军中国共产党中国人民"; $num = strlen($str); //$num字串长度。 echo $num . "<br>"; for ($i = 0; $i < $num; $i++) if (ord(substr($str, $i, 1)) > 0xa0) $j++; echo $j / 2; //$j/2 汉字数。 ?>
应该这样剥除所有字母数字和标点,空格,代码如下:
<?php
$testStr = '我没有告诉你,你就千万不要乱guess, 这样可不good!';
$testStr = eregi_replace("[[:alnum:]]|[[:punct:]]|[[:space:]]", '', $testStr);
echo ($testStr);
echo ('字符串中所有中文字数为:' . mb_strlen($testStr));
?>#计算中英文混合字符串的长度,代码如下:
<?php
function ccStrLen($str) {
$ccLen = 0;
$ascLen = strlen($str);
$ind = 0;
$hasCC = ereg("[xA1-xFE]", $str); //判断是否有汉字
$hasAsc = ereg("[x01-xA0]", $str); //判断是否有ASCII字符
if ($hasCC && !$hasAsc) //只有汉字的情况
return strlen($str) / 2;
if (!$hasCC && $hasAsc) //只有Ascii字符的情况
return strlen($str);
for ($ind = 0; $ind < $ascLen; $ind++) {
if (ord(substr($str, $ind, 1)) > 0xa0) {
$ccLen++;
$ind++;
} else {
$ccLen++;
}
}
return $ccLen;
}
function ccStrLeft($str, $len) //从左边截取中英文混合字符串
{
$ascLen = strlen($str);
if ($ascLen <= $len) return $str;
$hasCC = ereg("[xA1-xFE]", $str); //同上
$hasAsc = ereg("[x01-xA0]", $str);
if (!$hasCC) return substr($str, 0, $len);
if (!$hasAsc) if ($len & 0x01) //如果长度是奇数
return substr($str, 0, $len + $len - 2);
else return substr($str, 0, $len + $len);
$cind = 0;
$flag = 0;
while ($cind < $ascLen) {
if (ord(substr($str, $cind, 1)) < 0xA1) $flag++;
$cind++;
}
if ($flag & 0x01) return substr($str, 0, $len);
else return substr($str, 0, $len - 1);
?>本文地址:http://www.phprm.com/develop/fs3951.html
转载随意,但请附上文章地址:-)