PHP DOMDocument 文件顯示它支援開箱即用的UTF-8 編碼,但正如提供的程式碼範例所示,這並不總程式碼範例所示,這並不總程式碼是案件。出現此問題的原因是 DOMDocument::loadHTML() 需要特定編碼的 HTML 字串,該編碼歷史上為 ISO-8859-1 (Latin-1)。
為了解決這個問題,我們需要將字串轉換為 DOMDocument 可以處理的編碼。一種選擇是將非 ASCII 字元轉換為 HTML 實體,從而有效地轉義它們。這可以使用 mb_convert_encoding() 函數和「HTML-ENTITIES」目標編碼來實現。
另一種方法是提示文件的編碼透過新增 標記到 HTML 字串的開頭。此標籤指定字元集,在本例中為 UTF-8:
<meta http-equiv="content-type" content="text/html; charset=utf-8">
此元標籤將自動放置在
中。文件部分,確保 DOMDocument 正確識別編碼。這是一個示範HTML 實體使用的範例:
$html = '<meta http-equiv="content-type" content="text/html; charset=utf-8">
<html><head><title>Test!</title></head><body><h1>☆ Hello ☆ World ☆</h1></body></html>';
$dom = new DOMDocument('1.0', 'utf-8');
$dom->loadHTML($html);
header('Content-Type: text/html; charset=utf-8');
echo($dom->saveHTML());
透過使用無論哪種方法,我們都可以確保DOMDocument 能夠正確處理UTF- 8 字符,讓程式輸出想要的結果:
<meta http-equiv="content-type" content="text/html; charset=utf-8">Test! ☆ Hello ☆ World ☆
以上是為什麼 DOMDocument 在 PHP 中載入 HTML 字串時會遇到 UTF-8 編碼問題?的詳細內容。更多資訊請關注PHP中文網其他相關文章!