mb_strlen 及 strlen 計算字串長度區別
strlen
int strlen ( string $string )
$str = '123456';
echo strlen($str); 6
$str = ' ab cd HTTP://www.jzread.com'/;
echo strlen($str); 20
$ch ='中國';
echo strlen($ch);//4
echo utf8_strlen($str); 20
//
function utf8_strlen($str)
{
$count = 0;
for($i = 0; $i < strlen($str); $i++)
{
$value = ord($str[$i]);
if($value > 127)
{
if($value >= 192 && $value <= 223)
$i++;
elseif($value >= 224 && $value <= 239)
$i = $i + 2 ;
elseif($value >= 240 && $value <= 247)
$i = $i + 3;
else
die('Not a UTF-8 compatible string');
}
$count++;
}
return $count;
}
下面來看看mb_strlen實例
echo '<br />';
$str ='中國';
echo mb_strlen($str,'gbk'); 2 長度為2,而剛才我們用strlen時輸出的時4,從這裡可看出mb_strlen設置了他的編碼為gbk時就當中文處理了。
echo mb_strlen( $str,'utf8');//3
當我們設置mb_strlen參數是uft8編碼時他的長度為3
來看個計算中英文混排字串長度實例
$str='建站教學網HTTP://www.jzread.com/原創文章';
計算如下
echo (strlen($str) + mb_strlen($str,'UTF8')) / 2;
echo
輸出結果
10
/*
strlen //計算字串長度,一個中文當2字元
mb_strlen //根據它的字元編碼模式,統計字元quot;
在使用 mb_strlen必須把php教程.ini中php_mbstring.dll前面的";" 去了才行,不過一般的套裝包預設是去了的。
本站原創文章,轉載注明來源HTTP://www.jzread.com/