最新的Web開發教程
 

PHP htmlspecialchars() Function

<PHP字符串參考

轉換所述預定義字符"<" (less than)">" (greater than)為HTML實體:

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

代碼的HTML輸出將是(View Source)

<!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實體。

這些預定義字符是:

  • (ampersand)變成&安培;
  • (double quote)變成&QUOT;
  • ' (single quote)變成&#039;
  • < (less than)變成&LT;
  • > (greater than)變成&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指定DOCTYPE無效(UTF-8)或&#FFFD;

用於指定所使用的文檔類型附加標誌:

  • 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特定西里爾字符集
  • CP1251 - Windows專用字符集西里爾
  • CP1252 - 西歐Windows特定的字符集
  • KOI8-R - 俄語
  • BIG5 - 中國傳統,主要用在台灣
  • GB2312 - 簡體中國,國家標準字符集
  • BIG5-HKSCS - 中文與香港擴展
  • SHIFT_JIS - 日本
  • EUC-JP - 日本
  • 的MacRoman - 這是使用的Mac OS字符集

Note:無法識別的字符集將被忽略,並且在之前的PHP 5.4版本的ISO-8859-1代替。 作為PHP 5.4的,它將由UTF-8的取代被忽略。

double_encode 可選的。 一個布爾值,指定編碼現有的HTML實體與否。
  • TRUE - 默認。 將一切轉換
  • FALSE - 不會編碼現有的HTML實體

技術細節

返回值: 返回轉換後的字符串

如果字符串包含無效的編碼,它會返回一個空字符串,除非是ENT_IGNORE或ENT_SUBSTITUTE標誌設置
PHP版本: 4+
更新日誌: 字符集參數的默認值被改變為UTF-8在PHP 5

ENT_SUBSTITUTE,ENT_DISALLOWED,ENT_HTML401,ENT_HTML5,ENT_XML1和ENT_XHTML在PHP 5.4中添加

ENT_IGNORE在PHP 5.3中添加

在PHP 5.2.3中加入的double_encode參數

在PHP 4.1中添加的字符集參數

更多示例

實施例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輸出將是(View Source)

<!DOCTYPE html>
<html>
<body>
Jane &amp; 'Tarzan'<br>
Jane &amp; &#039;Tarzan&#039;<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輸出將是(View Source)

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

代碼的瀏覽器輸出將是:

I love "PHP" .
運行示例»

<PHP字符串參考