用 PHP 程式來修正 RSS 裡的語法解析錯誤。
一些新聞訊息之類的網站提供 RSS (Resource description framework Site Summary, 簡易資訊聚合),以 XML (Extensible Markup Language, 可延伸標記式語言) 語法的格式,供其它的網站連結新聞標題及圖片,顯示在其它網站的頁面中。
但有時,這些 RSS 站因為新聞內容有些特殊字元,會造成後台諸如 PHP 等 動態網頁程式解析錯誤,讓整個該生成的內容都無法順利產生。
這時有二條路可以做:
- 從源頭導正。連絡上該網站的程式設計師,加入一些字元檢查置換的程式,將特殊字元改掉的治本辦法。
- 自己做好自己的事。加入一些字元檢查置換程式,將特殊字元改掉的治標辦法。
- 熱血貢獻原始碼社群。改進動態網頁程式 (例如 PHP) 的程式,讓它遇到錯誤時能自動修正,不要將問題向後丟。
正確的做法當然是從源頭就導正的治本方法,但我們常常不知道上游會不會因為一些狀況,讓程式又送出特殊字元,造成自己負責的網站又出包。所以在自己的程式裡加上檢查置換程式。程式多了很多邊界檢查,雖然是治標,又會影響效能,但卻是一勞永逸的方法。
< 要改成 <
> 要改成 >
& 要改成 &
" 要改成 "
' 要改成 '
© 要改成 ©
® 要改成 ®
以 PHP 程式為例:
- 先將網站的 RSS XML 讀進變數中。
- 接著將 XML 裡面不是在 tag /tag 裡面的 Header 去掉。
- 再用 preg_replace 正規表示式 (Regular Expression) 將 tag /tag 中間的字串改成 HTML 格式的 Character Entities (例如 變成 < )
- 再將 XML 的 Header 加回去。
- 之後塞給 PHP 的 SimpleXML 函式,就可以順利處理了。