關於截斷字尾這件事

字尾截斷程式常常會用到,程式本身也非常簡單,接下來就來介紹用PHP或CSS截斷字尾的方法。

CSS截斷字尾並且在字尾加上…是個很簡單也很好用的方法,不過經我測試過後,只有在IE上面才有效,FireFox上面則是毫無反應,跟強制斷行的問題一樣(這個時候,就會有點想臭罵FF),但是還是寫在這裡,因為也許有一天FF也可以支援也不一定。

<div style="width:100px; overflow:hidden; text-overflow:ellipsis;"> 這個就是只有在IE裡面才有效 的CSS專屬字尾截斷效果,看到</div>

再來就是我在Big5網頁當中所使用的斷字程式,我沒有在UTF-8網頁上測試過,如果測過也沒問題的話,再來這邊補充一下。

function cutword($cutstring,$cutno){ 
  if(strlen($cutstring) > $cutno) { 
    for($i=0;$i<$cutno;$i++) { 
      $ch=substr($cutstring,$i,1); 
      if(ord($ch)>127) $i++; 
    } 
    $cutstring= substr($cutstring,0,$i)."..."; 
  } 
  return $cutstring; 
}

使用的時候只需要使用cutword($str,24);就可以了,後面放的就是你所要保留的字元數,中文的話每個字必須要算做兩個字元。

第三個則是我在UTF-8上面所使用的斷字程式,要搭配mbstring套件來使用,使用的方式與上面的一樣,同樣也是回傳截斷後的文字。

function cut_str($subject,$strlen) { 
    if(!extension_loaded('mbstring')) { 
      dl("mbstring.so"); 
    } 
    if(function_exists('mb_substr')) { 
      $newstr  = mb_substr($subject, 0, $strlen, "UTF8"); 
      if (mb_strlen($subject,'UTF-8') > $strlen) { 
        $newstr .= '...'; 
      } 
    } 
  return $newstr; 
}

One thought on “關於截斷字尾這件事

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s