無法使用PHP DOMDocument::loadHTML 編碼UTF-8
在某些情況下,嘗試使用DOMDocument::loadHTML 解析HTML 可以解析HTML導致編碼問題,特別是在涉及UTF-8 編碼時。本文探討了這些問題背後的原因,並提供了幾種有效解決方案。
問題原因
預設情況下,DOMDocument 將字串視為採用 ISO 編碼的字串8859-1,這是HTTP/1.1預設字元集。但是,在此假設下,UTF-8 字串會被錯誤解釋,從而導致編碼錯誤。
替代解決方案
1.前置編碼聲明
對於簡單的(X)HTML 片段,請前置XML 或元字元集宣告以指示解析器將字串視為UTF-8:
$contentType = '<meta http-equiv="Content-Type" content="text/html; charset=utf-8">'; $dom->loadHTML($contentType . $profile); $dom->loadHTML('<meta charset="utf8">' . $profile);
2。使用HTML SmartDOMDocument
如果無法確定先前的編碼聲明,可以應用此解決方法:
$dom->loadHTML(mb_convert_encoding($profile, 'HTML-ENTITIES', 'UTF-8'));
3. PHP 8.2 解決方法
3. PHP 8.2 解決方法
$dom->loadHTML(mb_encode_numericentity($profile, [0x80, 0x10FFFF, 0, ~0], 'UTF-8'));
3. PHP 8.2 解決方法對於PHP 8.2 ,請使用以下方法:
結論透過了解編碼問題的原因並採用適當的解決方案,開發人員可以使用PHP 的UTF-8編碼有效地解析HTML DOMDocument::loadHTML 方法。以上是為什麼 PHP DOMDocument::loadHTML 使用 UTF-8 編碼失敗,如何修復?的詳細內容。更多資訊請關注PHP中文網其他相關文章!