English | 简体中文 | 繁體中文
查询

htmlspecialchars()函数—用法及示例

「 将特殊字符转换为 HTML 实体,以防止 XSS(跨站脚本攻击)攻击 」


函数名称:htmlspecialchars()

函数说明:htmlspecialchars() 函数用于将特殊字符转换为 HTML 实体,以防止 XSS(跨站脚本攻击)攻击。

函数语法:htmlspecialchars(string $string, int $flags = ENT_COMPAT | ENT_HTML401, string|null $encoding = null, bool $double_encode = true): string

参数说明:

  • $string:必需,要转换的字符串。
  • $flags:可选,用于指定转换的规则。默认为 ENT_COMPAT | ENT_HTML401,表示将双引号转换为实体,其他特殊字符保持不变。可选的标志有:
    • ENT_COMPAT:默认值,仅将双引号转换为实体。
    • ENT_QUOTES:将双引号和单引号都转换为实体。
    • ENT_NOQUOTES:不转换任何引号。
    • ENT_HTML401:将字符转换为 HTML 4.01 实体。
    • ENT_XML1:将字符转换为 XML 1 实体。
    • ENT_XHTML:将字符转换为 XHTML 实体。
    • ENT_HTML5:将字符转换为 HTML 5 实体。
  • $encoding:可选,指定要使用的字符编码。默认为 null,表示使用当前脚本的字符编码。
  • $double_encode:可选,指定是否对已经转换的实体再次进行转换。默认为 true,表示转换两次。

返回值:返回转换后的字符串。

示例:

  1. 基本用法:
$str = 'This is a "quote" <tag>.';
$encoded_str = htmlspecialchars($str);
echo $encoded_str;
// 输出:This is a &quot;quote&quot; &lt;tag&gt;.
  1. 指定转换规则和字符编码:
$str = 'This is a "quote" <tag>.';
$encoded_str = htmlspecialchars($str, ENT_QUOTES, 'UTF-8');
echo $encoded_str;
// 输出:This is a &quot;quote&quot; &lt;tag&gt;.
  1. 禁止对已转换的实体再次进行转换:
$str = 'This is a "quote" <tag>.';
$encoded_str = htmlspecialchars($str, ENT_QUOTES, 'UTF-8', false);
echo $encoded_str;
// 输出:This is a &quot;quote&quot; &lt;tag&gt;.

注意事项:

  • htmlspecialchars() 函数只转换特殊字符,不会转换整个 HTML 标签,因此并不能完全阻止 XSS 攻击,仍然需要其他安全措施。
  • 在输出用户输入的内容时,务必使用 htmlspecialchars() 函数进行转换,以避免潜在的安全风险。
补充纠错
上一个函数: htmlspecialchars_decode()函数
下一个函数: htmlentities()函数
热门PHP函数
分享链接