在開發模組時並不是所有的文字框都要使用CK編輯器,CK編輯器使用JS生成消耗前端資源,用越多網站開啟越慢,一些純文字的內容用原生的textarea即可,但需要做一些處理,不然內容輸出樣板會有以下問題
1、若未設置nl2br函數保留原格式,所有的段行內容都會黏再一起。
2、若未做字元轉編碼htmlentities,則一些特殊字元無法正常顯示:例如&會變成¢。
3、內容中如有URL無法自動產生連結。
會像下圖這樣
為了解決這問題,寫了一個function包含了(保留原格式/字元轉編碼/URL自動加上連結)等函數,code如下:
function textprocessing($val=""){//字元轉編碼
$val=htmlentities($val,ENT_QUOTES,"UTF-8");
//URL自動加上連結
$val = preg_replace('#(http|https|ftp|telnet)://([0-9a-z\.\-]+)(:?[0-9]*)([0-9a-z\_\/\?\&\=\%\.\;\#\-\~\+]*)#i','<a target="_blank" href="\1://\2\3\4" rel="nofollow">\1://\2\3\4</a>', $val);
//保留原格式
return nl2br($val);
}
在php上輸出內容變數加上textprocessing()函數
ECHO $message=textprocessing($val=$message);
或是在smarty樣板上直接引用函數也可以(php端就不需處理)
<{$message|textprocessing}>
最後輸出結果如下圖
可以看到原格式斷行/特殊字元/URL加上連結都有處理了,這樣用一個function就能解決三個問題,有需要的朋友參考看看!
工作心得撰寫:徐嘉裕 Neil hsu
留言
張貼留言