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 攻击。