截取UTF-8编码字符串的方法有很多,我也分享一个:
function cutStr($Str, $Length) { global $s; $i = 0; $l = 0; $ll= strlen($Str); $s = $Str; $f = true; while ($i <= $ll) { if (ord($Str{$i}) < 0x80) { $l++; $i++; } elseif (ord($Str{$i}) < 0xe0) { $l++; $i += 2; } elseif (ord($Str{$i}) < 0xf0) { $l += 2; $i += 3; } elseif (ord($Str{$i}) < 0xf8) { $l += 1; $i += 4; } elseif (ord($Str{$i}) < 0xfc) { $l += 1; $i += 5; } elseif (ord($Str{$i}) < 0xfe) { $l += 1; $i += 6; } if (($l >= $Length - 1) && $f) { $s = substr($Str, 0, $i); $f = false; } if (($l > $Length) && ($i < $ll)) { $s = $s . '...'; break; //如果进行了截取,字符串末尾加省略符号“...” } } return $s; }