廣告廣告
  加入我的最愛 設為首頁 風格修改
首頁 首尾
 手機版   訂閱   地圖  簡體 
您是第 5296 個閱讀者
 
發表文章 發表投票 回覆文章
  可列印版   加為IE收藏   收藏主題   上一主題 | 下一主題   
笑笑 會員卡 葫蘆墩家族
個人文章 個人相簿 個人日記 個人地圖
發文大師獎
頭銜:    
風雲人物
級別: 風雲人物 該用戶目前不上站
推文 x137 鮮花 x523
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片
推文 x0
[PHP][教學] PHP UTF-8 截字、斷字專用 function
在寫網頁的時後常會遇到 80 個字要截字, 然後超過 80 字加 "...", 未滿 80 字不加.. 等等之類的問題.

之前用 mb_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'); // 算字寬度

mb_strlen 跟 mb_strwidth 有什麼不同呢?

複製程式
echo mb_strwidth("數位男女", 'UTF8').'<br>'
echo mb_strlen("數位男女", 'UTF8').'<br>'
你會看到

8
4

所以如果你是要顯示在網頁上,那就用 mb_strwidth 會比較準,因為一個中文字的寬度等於兩個英文字的寬度

如果你要寫入 MySQL ,那就要用 mb_strlen 比較準,因為 MySQL 4.1.x 以後,資料的內碼都是用 UTF-8 ,而欄位寬度也是用 UTF-8 去算的


[ 此文章被笑笑在2008-06-12 12:23重新編輯 ]



每天大笑三聲,可以讓你更長壽哦...^^
獻花 x0 回到頂端 [樓 主] From:臺灣新世紀資通股份有限公司 | Posted:2008-06-12 11:46 |

首頁  發表文章 發表投票 回覆文章
Powered by PHPWind v1.3.6
Copyright © 2003-04 PHPWind
Processed in 0.060187 second(s),query:15 Gzip disabled
本站由 瀛睿律師事務所 擔任常年法律顧問 | 免責聲明 | 本網站已依台灣網站內容分級規定處理 | 連絡我們 | 訪客留言