修正UTF-8數字截取尾端亂碼的BUG
- Posted by Beata on 十月 2nd, 2005 filed in tattertools

以下這段代碼可以修正UTF-8截取尾端亂碼的BUG
原始出處及版權所屬為 夢遊華人中文網 所有
不過 夢遊華人中文網 那邊的文章中,代碼中卻顯示出一堆亂碼,閱讀上非常不便。
我將代碼整理過之後放在這提供給各位參考。
上圖為改過之後的樣子
開啟 inc_function.php 搜尋
將下列代碼取代掉整個 str_cut 函數
-
function str_cut($str, $maxlen, $type) {
-
// Sea Otter
-
// 代碼說明:對原有中文截取函數的修正
-
// 1、長度錯誤
-
// 2、位置錯誤
-
// 變更方式:修改
-
// 變更時間:2005.05.10
-
// 變更開始———————————-
-
/*
-
// 原截取代碼
-
if ($len <= $maxlen) return str_tag_off(str_trans($str));
-
for ($i=0;$i<($maxlen-1);$i++) {
-
if (ord(substr($str,$i,1)) < 128) {
-
$return_str .= substr($str,$i,1);
-
} else {
-
$return_str .= substr($str,$i,2);
-
$i++;
-
}
-
}
-
*/
-
-
$str = str_tag_on(str_trans_rev($str));
-
$i = 0;
-
$l = 0;
-
$return_str = $str;
-
$f = true;
-
while ($i <= $len) {
-
$l++;
-
$i++;
-
}
-
$l++;
-
$i += 2;
-
}
-
$l += 2;
-
$i += 3;
-
}
-
$l += 1;
-
$i += 4;
-
}
-
$l += 1;
-
$i += 5;
-
}
-
$l += 1;
-
$i += 6;
-
}
-
if (($l >= $maxlen - 1) && $f) {
-
$f = false;
-
}
-
-
-
if (($l > $maxlen) && ($i <=$len)) {
-
$return_str = str_tag_off(str_trans($return_str))."..";
-
if ($type) {
-
$str = str_tag_off(str_trans($str));
-
$return_str = "<span title=\"$str\">".$return_str."</span>";
-
}
-
break;
-
}
-
}
-
return $return_str;
-
// 變更結束———————————-
-
}
» 後記
跳船到WP之後,將 cut_str 做了些簡化…
-
function cut_str($str, $maxlen) {
-
$i = 0; $l = 0; $f = true;
-
while ($i <= $len) {
-
}
-
}
-
}
-
}
-
}
-
}
-
if (($l >= $maxlen - 1) && $f) {
-
$f = false;
-
}
-
if (($l > $maxlen) && ($i <=$len)) {
-
$str .= "…";
-
break;
-
}
-
}
-
return $str;
-
}
九月 30th, 2005 at 3:55 上午
哇,這個好棒啊^_^
撿回去用用看..:)
九月 30th, 2005 at 4:08 上午
呵~
想不到你也是夜貓哩~
歡迎參觀^
九月 30th, 2005 at 5:17 上午
真詭異,我有傳送一篇引用過來,沒有顯示..o_o;
九月 30th, 2005 at 5:30 上午
咦?還真~奇怪哩~
是bug嗎?
十月 3rd, 2005 at 12:31 下午
不小心看到這篇讓我的 TattorTools 變正常了, 感恩啊~ ^__^