Latest web development tutorials

PHP htmlspecialchars() 函數

PHP String 參考手冊 PHP String參考手冊

實例

把預定義的字符"<" (小於)和">" (大於)轉換為HTML 實體:

<?php
$str = "This is some <b>bold</b> text.";
echo htmlspecialchars($str);
?>

上面代碼的HTML 輸出如下(查看源代碼):

<!DOCTYPE html>
<html>
<body>
This is some &lt;b&gt;bold&lt;/b&gt; text.
</body>
</html>

上面代碼的瀏覽器輸出如下:

This is some <b>bold</b> text.

運行實例»

定義和用法

htmlspecialchars() 函數把一些預定義的字符轉換為HTML 實體。

預定義的字符是:

  • & (和號)成為&amp;
  • " (雙引號)成為&quot;
  • ' (單引號)成為'
  • < (小於)成為&lt;
  • > (大於)成為&gt;

提示:要把特殊的HTML實體轉換回字符,請使用htmlspecialchars_decode()函數。


語法

htmlspecialchars( string,flags,character-set,double_encode )

參數 描述
string 必需。 規定要轉換的字符串。
flags 可選。 規定如何處理引號、無效的編碼以及使用哪種文檔類型。

可用的引號類型:

  • ENT_COMPAT - 默認。 僅編碼雙引號。
  • ENT_QUOTES - 編碼雙引號和單引號。
  • ENT_NOQUOTES - 不編碼任何引號。

無效的編碼:

  • ENT_IGNORE - 忽略無效的編碼,而不是讓函數返回一個空的字符串。 應盡量避免,因為這可能對安全性有影響。
  • ENT_SUBSTITUTE - 把無效的編碼替代成一個指定的帶有Unicode 替代字符U+FFFD(UTF-8)或者&#FFFD; 的字符,而不是返回一個空的字符串。
  • ENT_DISALLOWED - 把指定文檔類型中的無效代碼點替代成Unicode替代字符U+FFFD(UTF-8)或者&#FFFD;。

規定使用的文檔類型的附加flags:

  • ENT_HTML401 - 默認。 作為HTML 4.01 處理代碼。
  • ENT_HTML5 - 作為HTML 5 處理代碼。
  • ENT_XML1 - 作為XML 1 處理代碼。
  • ENT_XHTML - 作為XHTML 處理代碼。
character-set 可選。 一個規定了要使用的字符集的字符串。

允許的值:

  • UTF-8 - 默認。 ASCII 兼容多字節的8 位Unicode
  • ISO-8859-1 - 西歐
  • ISO-8859-15 - 西歐(加入歐元符號+ ISO-8859-1 中丟失的法語和芬蘭語字母)
  • cp866 - DOS 專用Cyrillic 字符集
  • cp1251 - Windows 專用Cyrillic 字符集
  • cp1252 - Windows 專用西歐字符集
  • KOI8-R - 俄語
  • BIG5 - 繁體中文,主要在台灣使用
  • GB2312 - 簡體中文,國家標準字符集
  • BIG5-HKSCS - 帶香港擴展的Big5
  • Shift_JIS - 日語
  • EUC-JP - 日語
  • MacRoman - Mac 操作系統使用的字符集

註釋:在PHP 5.4之前的版本,無法被識別的字符集將被忽略並由ISO-8859-1替代。自PHP 5.4 起,無法被識別的字符集將被忽略並由UTF-8 替代。

double_encode 可選。 一個規定了是否編碼已存在的HTML 實體的布爾值。
  • TRUE - 默認。 將對每個實體進行轉換。
  • FALSE - 不會對已存在的HTML 實體進行編碼。

技術細節

返回值: 返回已轉換的字符串。

如果string包含無效的編碼,則返回一個空的字符串,除非設置了ENT_IGNORE或者ENT_SUBSTITUTE標誌。
PHP 版本: 4+
更新日誌: 在PHP 5中, character-set參數的默認值改為UTF-8。

在PHP 5.4 中,新增了:ENT_SUBSTITUTE、ENT_DISALLOWED、ENT_HTML401、ENT_HTML5、ENT_XML1 和ENT_XHTML。

在PHP 5.3 中,新增了ENT_IGNORE。

在PHP 5.2.3中,新增了double_encode參數。

在PHP 4.1中,新增了character-set參數。


更多實例

實例1

把一些預定義的字符轉換為HTML 實體:

<?php
$str = "Jane & 'Tarzan'";
echo htmlspecialchars($str, ENT_COMPAT); // Will only convert double quotes
echo "<br>";
echo htmlspecialchars($str, ENT_QUOTES); // Converts double and single quotes
echo "<br>";
echo htmlspecialchars($str, ENT_NOQUOTES); // Does not convert any quotes
?>

上面代碼的HTML 輸出如下(查看源代碼):

<!DOCTYPE html>
<html>
<body>
Jane &amp; 'Tarzan'<br>
Jane &amp; 'Tarzan'<br>
Jane &amp; 'Tarzan'
</body>
</html>

上面代碼的瀏覽器輸出如下:

Jane & 'Tarzan'
Jane & 'Tarzan'
Jane & 'Tarzan'

運行實例»

實例2

把雙引號轉換為HTML 實體:

<?php
$str = 'I love "PHP".';
echo htmlspecialchars($str, ENT_QUOTES); // Converts double and single quotes
?>

上面代碼的HTML 輸出如下(查看源代碼):

<!DOCTYPE html>
<html>
<body>
I love &quot;PHP&quot;.
</body>
</html>

上面代碼的瀏覽器輸出如下:

I love "PHP".

運行實例»


PHP String 參考手冊 PHP String參考手冊