一个对超长标题截断的函数
时间:2008-04-18 来源:慕良文王
function substrgb($in,$num){
$pos=0;
$out="";
while($c=substr($in,$pos,1)){
if($c=="\n") break;
if(ord($c)>128){
$out.=$c;
$pos++;
$c=substr($in,$pos,1);
$out.=$c;
}else{
$out.=$c;
}
$pos++;
if($pos>=$num) break;
}
if($out!=$in) $out = $out . "...";
return $out;
}
//调用很简单
//substrgb($row['title'],35)
还有一个更简单的方法,多谢Jon兄的指点
PHP 截字、斷字專用 function
在寫網頁的時後常會遇到 80 個字要截字, 然後超過 80 字加 “…”, 未滿 80 字不加.. 等等之類的問題.
之前用 substr 的寫法如下:
$string = strip_tags($string); // 先清掉 html tag, 以免 html tag 被破壞
$string = mb_substr($string, 0, 80, 'UTF-8');
$string .= (mb_strlen($string, 'UTF-8') > 80)?'...':'';
PHP 有支援很方便的 function 可以直接達到此功能.
$string = strip_tags($string);
$string = mb_strimwidth($string, 0, 80, '...', 'UTF-8');
在 UTF-8 的環境算字數用 strlen 或 mb_strlen 都不是很準, 所以可以用另一個做法, 算字的寬度, 也是個不錯的做法
echo mb_strwidth($string, 'UTF-8'); // 算字寬度
原文:
PHP 截字、斷字專用 function
$pos=0;
$out="";
while($c=substr($in,$pos,1)){
if($c=="\n") break;
if(ord($c)>128){
$out.=$c;
$pos++;
$c=substr($in,$pos,1);
$out.=$c;
}else{
$out.=$c;
}
$pos++;
if($pos>=$num) break;
}
if($out!=$in) $out = $out . "...";
return $out;
}
//调用很简单
//substrgb($row['title'],35)
还有一个更简单的方法,多谢Jon兄的指点
PHP 截字、斷字專用 function
在寫網頁的時後常會遇到 80 個字要截字, 然後超過 80 字加 “…”, 未滿 80 字不加.. 等等之類的問題.
之前用 substr 的寫法如下:
$string = strip_tags($string); // 先清掉 html tag, 以免 html tag 被破壞
$string = mb_substr($string, 0, 80, 'UTF-8');
$string .= (mb_strlen($string, 'UTF-8') > 80)?'...':'';
PHP 有支援很方便的 function 可以直接達到此功能.
$string = strip_tags($string);
$string = mb_strimwidth($string, 0, 80, '...', 'UTF-8');
在 UTF-8 的環境算字數用 strlen 或 mb_strlen 都不是很準, 所以可以用另一個做法, 算字的寬度, 也是個不錯的做法
echo mb_strwidth($string, 'UTF-8'); // 算字寬度
原文:
PHP 截字、斷字專用 function
相关阅读 更多 +