在做網站頁面模板經常需要截取一定長度字符串為標題或摘要時遇到中文和半角英文數字混合導致截取的顯示長度不一致的情況,寫了個函數解決這個問題
function tb_substr($str,$len){
$len*=2;
$i=$j=0;
for($i=0;$i<mb_strlen($str,'UTF-8');$i++) {
if(strlen(mb_substr($str,$i,1,'UTF-8'))>1){
$j+=2;
}else{
$j++;
}
if($j>=$len) {
break;
}
}
return mb_substr($str,0,++$i,'UTF-8');
}
//Example:
$a = "一首BeteercityBetterlife給世人留下了深刻的印象";
$b = "北京奧運會那迷人的身影和天籁的歌聲感染了世界";
echo(tb_substr($a,10)."\r\n".tb_substr($b,10));
//一首BeteercityBetter
//北京奧運會那迷人的身