PHP DOMDocument loadHTML 未正確編碼UTF-8
嘗試使用DOMDocument::loadHTML() 解析HTML 時,您可能會遇到問題使用正確的UTF-8 編碼。預設情況下,DOMDocument 將輸入字串視為 ISO-8859-1,這在處理 UTF-8 資料時可能會導致錯誤。
解決方案:
確保正確編碼,您可以採用各種方法:
前編碼聲明: 新增XML 編碼聲明或HTML 元字元集聲明以指示UTF-8字元的存在:
$contentType = '<meta http-equiv="Content-Type" content="text/html; charset=utf-8">'; $dom->loadHTML($contentType . $profile);
使用SmartDOMDocument: 如果輸入 HTML 可能已包含聲明,請使用 SmartDOMDocument函式庫來解決潛在的衝突:
$dom->loadHTML(mb_convert_encoding($profile, 'HTML-ENTITIES', 'UTF-8'));
替代方案: 在 PHP 8.2 中,使用 mb_encode_numericentity()進行更安全的編碼選項:
$dom->loadHTML(mb_encode_numericentity($profile, [0x80, 0x10FFFF, 0, ~0], 'UTF-8'));
HTML5 注意事項:
DOMDocument 使用 HTML4 解析器。對於 HTML5 文檔,請考慮使用專為 HTML5 合規性而設計的替代 HTML 解析器。
範例:
以下程式碼示範如何使用 mb_convert_encoding() 來修正不正確的 UTF-8編碼:
$profile = ""; $dom = new DOMDocument(); $dom->loadHTML(mb_convert_encoding($profile, 'HTML-ENTITIES', 'UTF-8')); echo $dom->saveHTML();イリノイ州シカゴにて、アイルランド系の家庭に、9人兄弟の5番目として
以上是為什麼我的 PHP DOMDocument::loadHTML() 無法正確處理 UTF-8 編碼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!