當前位置: 首頁> 最新文章列表> 表單中的HTML 實體怎麼還原?用html_entity_decode 快速搞定

表單中的HTML 實體怎麼還原?用html_entity_decode 快速搞定

gitbox 2025-09-02

HTML 實體是什麼?

HTML實體是一些字符的編碼形式,通常以&開頭,以;結束。常見的HTML實體包括:

  • <對應<

  • >對應>

  • &對應&

  • "對應"

  • &nbsp;對應空格

這些實體通常用於防止某些字符在HTML中引起語法錯誤或影響頁面渲染。當表單數據通過HTTP請求提交時,這些字符可能會被轉換成實體,以確保其正確傳輸。

為什麼需要還原HTML 實體?

當表單數據被用戶提交到服務器時,特殊字符常常被轉義為HTML實體。這種轉義雖然有助於安全性(避免惡意腳本注入),但有時我們需要還原這些實體,以便正確顯示原始內容。比如,如果用戶輸入了一段包含<>的HTML標籤,並且該標籤被轉義成了<> ,我們可能希望還原為實際的字符,以便在頁面中正確展示。

如何使用html_entity_decode()還原HTML 實體?

html_entity_decode()是PHP 提供的一個內置函數,主要用於將HTML實體轉換為相應的字符。其基本用法如下:

 <span><span><span class="hljs-variable">$string</span></span><span> = </span><span><span class="hljs-string">"Hello &amp;lt;world&amp;gt;!"</span></span><span>;
</span><span><span class="hljs-variable">$decoded_string</span></span><span> = </span><span><span class="hljs-title function_ invoke__">html_entity_decode</span></span><span>(</span><span><span class="hljs-variable">$string</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$decoded_string</span></span><span>;
</span></span>

輸出:

 <span><span><span class="language-xml">Hello <span class="hljs-tag">&lt;<span class="hljs-name">world</span></span></span></span><span>&gt;!
</span></span>

如上所示, html_entity_decode()<>還原為<>

函數參數詳解:

  • html_entity_decode($string, $flags, $encoding)

    • $string :要處理的字符串,包含需要轉換的HTML實體。

    • $flags :可選參數,用於控制轉換過程。常用的標誌有:

      • ENT_COMPAT (默認):只轉換雙引號,不轉換單引號。

      • ENT_QUOTES :轉換雙引號和單引號。

      • ENT_NOQUOTES :不轉換任何引號。

    • $encoding :可選參數,指定字符編碼,默認為UTF-8

示例:將所有引號還原

如果你希望還原字符串中的所有HTML實體,包括單引號和雙引號,可以使用ENT_QUOTES標誌:

 <span><span><span class="hljs-variable">$string</span></span><span> = </span><span><span class="hljs-string">"It&amp;apos;s a &amp;quot;great&amp;quot; day!"</span></span><span>;
</span><span><span class="hljs-variable">$decoded_string</span></span><span> = </span><span><span class="hljs-title function_ invoke__">html_entity_decode</span></span><span>(</span><span><span class="hljs-variable">$string</span></span><span>, ENT_QUOTES);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$decoded_string</span></span><span>;
</span></span>

輸出:

 <span><span>It</span><span><span class="hljs-symbol">'s</span></span><span> a </span><span><span class="hljs-string">"great"</span></span><span> day!
</span></span>

在表單處理中的應用

假設你有一個表單,用戶輸入了包含HTML實體的文本,提交到服務器後,服務器端收到的文本可能已經是轉義過的HTML實體。你需要在展示表單結果時將這些實體還原。使用html_entity_decode()就能輕鬆實現這一功能。

示例:表單數據處理

<span><span><span class="hljs-comment">// 假設接收到的表單數據已經進行了HTML實體轉義</span></span><span>
</span><span><span class="hljs-variable">$submitted_data</span></span><span> = </span><span><span class="hljs-string">"Hello &amp;lt;strong&amp;gt;world&amp;lt;/strong&amp;gt;!"</span></span><span>;
</span><span><span class="hljs-variable">$decoded_data</span></span><span> = </span><span><span class="hljs-title function_ invoke__">html_entity_decode</span></span><span>(</span><span><span class="hljs-variable">$submitted_data</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$decoded_data</span></span><span>;
</span></span>

輸出:

 <span><span>Hello &lt;</span><span><span class="hljs-selector-tag">strong</span></span><span>&gt;world&lt;/</span><span><span class="hljs-selector-tag">strong</span></span><span>&gt;!
</span></span>

通過html_entity_decode() ,原本被轉義的HTML實體得以還原,內容也就可以正確展示了。

總結

在開發表單時,HTML實體的轉義和還原是非常常見的需求,尤其是在處理用戶輸入的內容時。 html_entity_decode()函數提供了一種簡單而高效的方法來將HTML實體轉換回其對應的字符,幫助開發者在表單處理和數據展示中更好地控制內容的呈現。

通過合理使用html_entity_decode() ,你可以確保用戶提交的文本在還原後能夠正確展示,避免因HTML實體造成的顯示錯誤或其他問題。

  • 相關標籤:

    HTML