著作權聲明:原創作品,允許轉載,轉載時請務必以超連結形式標明文章原始出版、作者資訊和本聲明。否則將追究法律責任。http://blog.csdn.net/mayongzhan - 馬永占,myz,mayongzhan
<?php/** * @name test.php * @date Mon Nov 19 21:10:39 CST 2007 * @copyright 馬永占(MyZ) * @author 馬永占(MyZ) * @link http://blog.csdn.net/mayongzhan/ */ header("Content-Type: text/html; charset=utf-8");echo $test = "馬永占MyZ";echo "<br />";mb_internal_encoding("UTF-8");//使用mb_strlenecho "strlen ".strlen($test)."<br />";echo "mb_strlen ".mb_strlen($test)."<br />";echo "mb_strwidth ".mb_strwidth($test)."<br />"; function countStr($str, $handle, $onlyCh=0){ //$handle = 1 按照mb_strlen算 一個中文按照1個字算 //$handle = 2 按照mb_strwidth算 一個中文按照2個字算 //$handle = 3 按照strlen算 一個中文按照3個字算 //$onlyCh = 1 只統計中文 $length = strlen($str); if ($handle == 3 && $onlyCh==0) { return $length; } else { $i = 0; if ($onlyCh == 1) { $k = 0; } else { $k = 1; } while($i < $length) { if(preg_match("/^[" . chr(0xa1) . "-" . chr(0xff) . "]+$/", $str[$i])) { $i += 3; $n += $handle; } else { $i += 1; $n += $k; } } return $n; }}echo "countStr1 " . countStr($test, 1) . "<br />";echo "countStr2 " . countStr($test, 2) . "<br />";echo "countStr3 " . countStr($test, 3) . "<br />";echo "countStr4 " . countStr($test, 1, 1) . "<br />";echo "countStr5 " . countStr($test, 2, 1) . "<br />";echo "countStr6 " . countStr($test, 3, 1) . "<br />";?>