當前位置: 首頁> 最新文章列表> 怎麼用html_entity_decode 和htmlentities 實現HTML 實體的雙向轉換?

怎麼用html_entity_decode 和htmlentities 實現HTML 實體的雙向轉換?

gitbox 2025-06-15

在處理網頁內容時,我們經常會遇到需要將HTML代碼中的特殊字符轉換成實體(如&轉成& )或將HTML實體還原成普通字符的需求。 PHP提供了兩個非常實用的函數來完成這項工作: htmlentitieshtml_entity_decode

本文將介紹這兩個函數的基本用法,並演示如何用它們實現HTML實體的雙向轉換。


1. htmlentities — 將字符轉換為HTML實體

htmlentities函數可以將字符串中的一些特殊字符轉換為對應的HTML實體,避免瀏覽器將它們解析成標籤或其他含義,保護頁面的安全性和格式正確顯示。

函數原型:

 string htmlentities ( string $string [, int $flags = ENT_COMPAT | ENT_HTML401 [, string $encoding = ini_get("default_charset") [, bool $double_encode = true ]]] )

簡單示例:

 <?php
$text = "Tom & Jerry's <b>adventure</b>!";
echo htmlentities($text);
// 輸出:Tom &amp; Jerry&apos;s &lt;b&gt;adventure&lt;/b&gt;!
?>

2. html_entity_decode — 將HTML實體轉換回字符

html_entity_decode的作用正好相反,它會把HTML實體轉換回對應的字符。

函數原型:

 string html_entity_decode ( string $string [, int $flags = ENT_COMPAT | ENT_HTML401 [, string $encoding = ini_get("default_charset") ]] )

簡單示例:

 <?php
$encoded = "Tom &amp; Jerry&apos;s &lt;b&gt;adventure&lt;/b&gt;!";
echo html_entity_decode($encoded);
// 輸出:Tom & Jerry's <b>adventure</b>!
?>

3. 實現HTML實體的雙向轉換示例

假設我們有一段字符串,需要先轉換為HTML實體保存,之後又需要將實體還原成原始字符,可以通過這兩個函數結合使用實現。

 <?php
$original = 'Hello & welcome to <a href="https://gitbox.net">gitbox.net</a>!';

// 將字符串轉換為HTML實體
$encoded = htmlentities($original);
echo "編碼後: " . $encoded . "\n";

// 再将編碼後的字符串还原
$decoded = html_entity_decode($encoded);
echo "解碼後: " . $decoded . "\n";
?>

輸出:

 編碼後: Hello &amp; welcome to &lt;a href=&quot;https://gitbox.net&quot;&gt;gitbox.net&lt;/a&gt;!
解碼後: Hello & welcome to <a href="https://gitbox.net">gitbox.net</a>!

4. 常用參數說明

  • flags :控制轉換的實體類型,如ENT_QUOTES會把單引號和雙引號都轉換。

  • encoding :指定字符編碼,默認是PHP 配置中的編碼,一般設置為UTF-8更安全。

  • double_encodehtmlentities特有):是否對已經轉換過的實體再次轉義,默認是true ,通常設置為false避免重複編碼。


5. 總結

  • htmlentities可以防止HTML標籤被瀏覽器解析,保證字符安全輸出。

  • html_entity_decode可以還原HTML實體為原始字符,方便後續處理。

  • 雙向轉換結合使用,可以安全處理用戶輸入,防止XSS攻擊,又能方便展示。

希望這篇文章能幫助你理解並應用好這兩個函數,實現HTML實體的雙向轉換。