PHP 字符串 htmlspecialchars() 函数

17 Mar 2025 | 4 分钟阅读

htmlspecialchars() 函数将特殊字符转换为 HTML 实体。它是 PHP 的内置函数,可以将所有预定义字符转换为 HTML 实体。预定义字符包括:

  • & (和号) 转换为 &
  • " (双引号) 转换为 "
  • ' (单引号) 转换为 '
  • < (小于号) 转换为 &lt;
  • > (大于号) 转换为 &gt;

有一个字符串函数 htmlspecialchars_decode(),它是 htmlspecialchars() 函数的逆函数。htmlspecialchars_decode() 函数的主要目的是将特殊 HTML 实体转换回字符。htmlspecialchars() 和 htmlspecialchars_decode() 函数彼此相反。htmlspecialchars() 函数的语法如下:

语法

参数

$string: 此参数包含输入字符串。

$flags: 基本上,此参数用于包含以下一个或多个标志,这些标志指定如何处理无效的代码单元序列、引号和使用的文档类型。默认值为 ENT_COMPAT | ENT_HTML401。下表给出了可用的标志常量。

可用标志常量

常量名称描述
ENT_IGNORE它会丢弃无效的代码单元序列,而不是返回空字符串。
ENT_QUOTES它会转换单引号和双引号。
ENT_NOQUOTES它不会转换任何字符串,因为它会保持单引号和双引号不转换。
ENT_SUBSTITUDE它将无效的代码单元序列替换为 Unicode 替换字符 U+FFFD (UTF-8) 或 &#FFFD,而不是返回空字符串。
ENT_DISALLOWED它将给定文档类型中的无效代码点替换为 Unicode 替换字符,而不是保留它们。
ENT_HTML401它将代码作为 HTML 4.01 版本处理。
ENT_XML1它将代码作为 XML 1 处理。
ENT_XHTML它将代码作为 XHTML 处理。
ENT_HTML5它将代码作为 HTML5 处理。

$encoding: 这是一个可选参数,定义了字符转换时使用的编码。编码的默认值因 PHP 版本而异。

在 PHP 5.6 及更高版本中,**default_charset** 配置选项用作默认值,而 PHP 5.4 和 5.5 使用 UTF-8。

$double_encode: 当 double_encode 关闭时,PHP 无法编码现有的 HTML 实体。默认情况下,所有内容都将被转换。

描述

有些字符在 HTML 中具有特殊含义,如果需要保留其含义,则必须由 HTML 实体表示。htmlspecialchars() 函数返回一个进行了这些转换的字符串。如果我们需要所有具有关联命名实体的输入子字符串都被翻译,那么请使用 htmlentities() 函数而不是 htmlspecialchars()。

htmlspecialchars() 返回值

它返回转换后的字符串,如果输入字符串无效或包含无效代码序列,则返回空字符串。

htmlspecialchars() 示例

下面给出了一些 htmlspecialchars() 函数的示例。

示例 1

浏览器输出

下面给出的输出是代码的**浏览器输出**。

PHP String htmlspecialchars() Function

HTML 输出

上面程序的 HTML 输出将如下所示:

PHP String htmlspecialchars() Function

HTML 输出可以在浏览器的查看源文件中看到。打开浏览器 -> 更多工具 -> 开发人员工具 -> 源,然后按 Ctrl+P 打开查看源文件。

PHP String htmlspecialchars() Function

示例 2

浏览器输出

下面给出的输出是代码的**浏览器输出**。

PHP String htmlspecialchars() Function

HTML 输出

我们可以从浏览器中的查看源文件查看上面程序的 **HTML 输出**,即浏览器 -> 更多工具 -> 开发人员工具 -> 源,然后按 Ctrl+P 打开查看源文件。

PHP String htmlspecialchars() Function

示例 3

浏览器输出

上面程序在浏览器上的输出将如下所示:

PHP String htmlspecialchars() Function

HTML 输出

以下程序的 HTML 输出将如下图所示。

PHP String htmlspecialchars() Function

上面的示例在 HTML 文件中将如下所示:

htmlspecialchars() 和 htmlentities() 函数的区别

htmlspecialchars() 和 htmlentities() 函数的唯一区别在于 htmlspecialchars() 函数将**特殊字符转换为 HTML 实体**,而 htmlentities() 函数将**所有适用字符转换为 HTML 实体**。


下一个主题PHP 字符串函数