htmlspecialchars()
函数用于将特殊字符转换为 HTML 实体,而这些特殊字符是预定义字符。预定义字符为:
- & (和号) 转为 &
- " (双引号) 转为 "
- ' (单引号) 转为 '
- < (小于) 转为 <
- > (大于) 转为 >
字符串函数 htmlspecialchars_decode() 和 htmlspecialchars()函数的作用相反,是它的反函数。
htmlspecialchars_decode()函数的目的是将特殊的HTML实体转换回字符,用于解码html实体。
语法
htmlspecialchars()函数的语法如下:String htmlspecialchars ( $string, $flags, $encoding, $double_encode );
参数
- $string:此参数为输入字符串。
- $flags: 标志,这些标志指定如何处理无效的代码单元序列、引号和使用的文档类型。 ENT_COMPAT | ENT_HTML401 是默认的,见下面的标志常量说明。
- $encoding:可选参数,定义编码转换字符时使用。 encoding 的默认值因 PHP 版本而异。在 PHP 5.6 及以上版本中,default_charset 配置选项用作默认值,而PHP 5.4 和 5.5 使用 UTF-8。
- $double_encode:当 double_encode 关闭时,PHP 无法编码现有的 HTML 实体。默认是转换所有内容。
下表中给出了可用的标志常量:
常量名称 | 说明 |
---|---|
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。 |
说明
有些字符在HTML 中具有特殊意义,如果需要保留其含义,则必须由HTML 实体表示。 htmlspecialchars() 函数返回一个带有这些转换的字符串。如果我们需要翻译所有关联命名实体的输入子字符串,则使用 htmlentities() 函数而不是 htmlspecialchars()。
返回值
它返回转换后的字符串,如果输入的字符串无效或包含无效的代码序列,则返回空字符串。
示例
下面给出htmlspecialchars() 函数的示例。
示例1
<?php
//htmlspecialchars()函数的字符串转换示例
$str = "This is <i>italic</i> text.";
echo htmlspecialchars($str, ENT_QUOTES); //将转换单引号和双引号。
?>
输出
This is <i>italic</i> text.
示例2
<?php
$str1= "This is 'PHP' & 'Java' program.";
echo htmlspecialchars($str1, ENT_COMPAT); //只转换双引号
echo "</br>";
echo htmlspecialchars($str1, ENT_QUOTES); // 转换双引号和单引号
echo "</br>";
echo htmlspecialchars($str1, ENT_NOQUOTES); //它不会转换任何引号。?>
输出:
This is 'PHP' & 'Java' program.</br>This is 'PHP' & 'Java' program.</br>This is 'PHP' & 'Java' program.
示例3
<?php
$str= '"PHP" is much easier than "Java".'. "\n";
echo htmlspecialchars($str); //只转双引号
echo "</br>";
echo htmlspecialchars($str, ENT_QUOTES); //转换双引号和单引号
echo "</br>";
echo htmlspecialchars($str, ENT_NOQUOTES); //不会转换单引号和双引号。
echo "</br>";
?>
输出:
"PHP" is much easier than "Java".
</br>"PHP" is much easier than "Java".
</br>"PHP" is much easier than "Java".
</br>
htmlspecialchars() 和 htmlentities() 区别
htmlspecialchars() 和 htmlentities() 函数之间的唯一区别是
- htmlspecialchars() 函数转换特殊字符转换为 HTML 实体,
- htmlentities() 函数将所有适用的字符转换为 html 实体。