首頁  >  文章  >  後端開發  >  為什麼 DOMDocument 在 PHP 中載入 HTML 字串時會遇到 UTF-8 編碼問題?

為什麼 DOMDocument 在 PHP 中載入 HTML 字串時會遇到 UTF-8 編碼問題?

DDD
DDD原創
2024-11-04 09:33:30564瀏覽

Why does DOMDocument struggle with UTF-8 encoding when loading HTML strings in PHP?

DOMDocument 編碼問題

PHP DOMDocument 文件顯示它支援開箱即用的UTF-8 編碼,但正如提供的程式碼範例所示,這並不總程式碼範例所示,這並不總程式碼是案件。出現此問題的原因是 DOMDocument::loadHTML() 需要特定編碼的 HTML 字串,該編碼歷史上為 ISO-8859-1 (Latin-1)。

將字串轉換為 HTML 實體

為了解決這個問題,我們需要將字串轉換為 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 = '&lt;meta http-equiv=&quot;content-type&quot; content=&quot;text/html; charset=utf-8&quot;&gt;
<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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn