我使用這個函數來截斷某些標題一定長度的結果: PHP截斷mb_substr是給不同長度
function truncateUTF8($str, $length, $breakWords = TRUE, $append = '...') {
$strLength = mb_strlen($str);
if ($strLength <= $length) {
return $str;
}
if (!$breakWords) {
while ($length < $strLength AND preg_match('/^\pL$/', mb_substr($str, $length, 1))) {
$length++;
}
}
return rtrim(mb_substr($str, 0, $length)) . $append;
}
呼叫:
echo truncateUTF8($str,94);
將返回不同的字符串lenghts上UTF8看看這些字符串:
ORIGINAL STR
個MAÏSDE 100carcaças德aviões德EMPRESAS falidasserãoretiradas德aeroportos ATEöFIM做ANO
// 98個字符
TRUNCATED STR
MAÏSDE 100carcaças德aviões德EMPRESAS falidasserãoretiradas德aeroportos吃ØFIM做...
// 94個字符 - 確定
ORIGINAL STR
NOTICIAS Transbrasil - 28 - MP頗得atuar EMaçõesfalimentares EM闕花環NAO Determina的SUAintervenção(STJ)
// 113字符
TRUNCATED STR
NOTICIAS Transbrasil - 28 - MP頗得atuar EM açõesfalimentares EM闕林雷NAO d ...
// 83個字符
這是怎麼回事?爲什麼第二個str被截斷爲83個字符而不是94個字符,就像第一個字符?
謝謝。
我想是因爲它的,因爲某些UTF8字符由兩個或三個UNICODE實體,這些差異可能是原因... – 2013-02-21 18:09:19