本篇文章更新時間:2019/02/16
如有資訊過時或語誤之處,歡迎使用 Contact 功能通知。
一介資男的 LINE 社群開站囉!歡迎入群聊聊~
如果本站內容對你有幫助,歡迎使用 BFX Pay 加密貨幣 或 新台幣 贊助支持。
這幾天都在用 NodeJS 寫爬蟲去測試解析資料,然後昨天要改用 PHP 實作的時候就發生一個詭異問題:
抽出來的文件是正常,但一經過移除斷行的解析時,整個文件編碼就走山了!
preg_replace('/s+/', ' ', $content);
怎麼想都是 preg_replace
這方法幫我加減料,後來才查到原因: Does preg_replace() change my character set?
因為 UTF8 編碼下的文字中常會帶有 0xa0
這個與「非斷行空白」一樣的使用,所以在 PCRE 模式下去做替換時,就會一並被處理到,導致編碼出現問題。
改法就是加上 /u
的參數,避免把 UTF8 字元給拆開來處理!
其實也不只有去解析 HTML 文件會碰到,只要是處理有 UTF8 字元的都可能,這個就真的要注意了~
#技術相關 #PHP #正規表示法 #爬蟲 #Parsing #HTML #UTF8 #亂碼 #RegEx
- Powered by Mxp.TW -FB2WP-