版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章原始出版、作者信息和本声明。否则将追究法律责任。
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_strlen
echo "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 />";
?>
v