PHP 截字 Function 造成整列資料空白修復

PHP 截字有個很好用得 Function (mb_strimwidth), 可見: PHP 截字、斷字專用 function.

問題

不過, 最近在使用上, 發現有個問題, 文字用此 Function 截字, 然後在做 HTML 碼的轉換, 結果有時候文字會出現, 有時候整行文字都消失了, 是怎麼回事?

錯誤訊息
  • [error] PHP Warning:  htmlentities(): Invalid multibyte sequence in argument in test.php
相關的程式碼彙整

<?php
function h($str)
{
reutrn htmlentities($str, ENT_QUOTES, 'UTF-8');
}
echo h(mb_strimwidth($v['desc'], 0, 120, ' ... 更多'));
?>

解法

發現應該是輸出時, 跟 htmlentities 搭配出問題, 於是於 mb_strimwidth() 加上 UTF-8 的設定就可以了, 解決步驟如下:

  1. 原本

    <?php echo h(mb_strimwidth($v['store_desc'], 0, 120, ' ...更多')); ?>

  2. 加上 UTF-8, ex:

    <?php echo h(mb_strimwidth($v['store_desc'], 0, 120, ' ...更多', 'UTF-8')); ?>

  3. 這樣子就都正常顯示囉~

作者: Tsung

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料