htmlspecialchars()
是 PHP 中的一個非常有用的函數,用于將特殊字符轉換為 HTML 實體
函數原型:
string htmlspecialchars ( string $string [, int $flags = ENT_QUOTES [, string $encoding = 'UTF-8' [, bool $double_encode = true ]]] )
參數說明:
$string
:必需。需要轉換的字符串。$flags
:可選。標志位,用于控制轉換方式。有以下幾個常用值:
ENT_QUOTES
:將雙引號(“)轉換為 HTML 實體(”)。ENT_NOQUOTES
:不轉換雙引號(")。ENT_HTML401
:使用 HTML 4.01 標準進行轉換(不推薦使用,因為 PHP 已經支持更嚴格的 HTML5 標準)。ENT_XML1
:使用 XML 1.0 標準進行轉換。ENT_XHTML
:使用 XHTML 標準進行轉換。ENT_QUOTES | ENT_HTML401
:將雙引號(“)轉換為 HTML 實體(”),并使用 HTML 4.01 標準進行轉換。$encoding
:可選。指定字符編碼。默認值為 ‘UTF-8’。支持的字符編碼有 ‘ISO-8859-1’、‘ISO-8859-2’、‘ISO-8859-3’、‘ISO-8859-4’、‘ISO-8859-5’、‘ISO-8859-6’、‘ISO-8859-7’、‘ISO-8859-8’、‘ISO-8859-9’、‘Windows-1252’、‘UTF-8’、‘UTF-16’ 和 ‘UTF-32’。$double_encode
:可選。布爾值,指定是否對已經轉換為 HTML 實體的字符進行雙重編碼。默認值為 true。如果設置為 false,已經轉換為 HTML 實體的字符將不會被再次編碼。返回值: 返回一個字符串,其中所有特殊字符都被轉換為相應的 HTML 實體。
示例:
<?php
$string = '<script>alert("XSS");</script>';
$encoded_string = htmlspecialchars($string, ENT_QUOTES, 'UTF-8');
echo $encoded_string; // 輸出:<script>alert("XSS");</script>
?>
在這個例子中,htmlspecialchars()
函數將 <script>
標簽和其中的雙引號轉換為 HTML 實體,從而防止 XSS 攻擊。