強烈推薦mb_strimwidth() 函數進行截斷,對於中文用戶來說,這個函數是相當實用的,因為很多摘要的方法都會把中文字截斷出亂碼,因為中文字在 UTF-8 編碼下占三個長度,是一個很尴尬的數字。8過,並不是所有主機都默認支持這個函數的,前提是要開啟 mb_string 這個模塊。那如果主機沒有開啟 mb_string 就不能使用 mb_strimwidth() 函數了嗎?有沒有變通的辦法呢?答案當然是 YES,於是也就有了本文。
先在 WordPress 主題的 functions.php 文件中添加如下代碼:
function dm_strimwidth($str ,$start , $width ,$trimmarker ){
$output = preg_replace('/^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$start.'}((?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$width.'}).*/s','\1',$str);
return $output.$trimmarker;
}
接下來在需要的地方調用如下:
echo dm_strimwidth(strip_tags($post->post_content),0,200,'<a href="'.get_permalink().'">......[閱讀全文]</a>');
用過 mb_strimwidth() 函數的朋友已經發現了,這個新建的函數和 mb_strimwidth() 的用法是一模一樣的,如果你的主機不支持 mb_string 擴展庫,那可以試試本文的方法。