$str[0] = "123asd你好[哈哈]"
$str[1] = "123asd你好[你好不好啊]"
//一个中文一个字符(utf-8的编码) 符号 [这里面的字和外边的符号算一个字符]
然后计算长度
结果是$str[0]和$str[1]为长度9
最好写成一个函数。谢谢了
------解决方案--------------------
我没太看懂楼主的题,不过函数,手头上有一个。
- PHP code
/**
* 得到utf8 的长度
* @author mu_rain
* @param String $str
* @return Int
*/
static 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;
}
------解决方案--------------------
- PHP code
function myLen($str,$startTag='[',$endTag=']',$encoding='utf-8')
{
$st = preg_quote($startTag);
$et = preg_quote($endTag);
return mb_strlen(preg_replace("#{$st}[^{$et}]*{$et}#","~",$str),$encoding);
}
echo myLen("123asd你好[哈哈]");//9
------解决方案--------------------
附赠字符串函数一堆 ,慢用。
- PHP code