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);
}
PHP gets the word count of mixed strings in English and Chinese