PHP计算字符串长度(中文问题)


Posted on November 29, 2008


想计算字符串长度来着,用了strlen函数,发现问题了,中文不算一个字符,这个问题肯定会带来截取的问题,GOOGLE了一下,发现不同的编码还有不同的方法,一向钟情于UTF-8的我,现在就写一下如何计算UTF8字符串长度,还有如何截取的问题~~

<?php // 说明:计算 UTF-8 字符串长度(忽略字节的方案)
function strlen_utf8($str) {
$i = 0;
$count = 0;
$len = strlen ($str);
while ($i < $len) {
$chr = ord ($str[$i]);
$count++;
$i++;
if($i >= $len) break;
if($chr & 0x80) {
$chr <<= 1;
while ($chr & 0x80) {
$i++;
$chr <<= 1;
}
}
}
return $count;
}
$str = http://www.minsblog.com/一个小小的测试;
echo strlen_utf8($str);
?>
 

截取utf8编码的多字节字符串

<?php
//截取utf8字符串
function utf8Substr($str, $from, $len)
{
return preg_replace(´#^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,´.$from.´}´.
´((?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,´.$len.´}).*#s´,
´$1´,$str);
}
?>


标签:N/A

 

在线学习答案查询入口
微信扫码联系
微信扫码联系