PHP String htmlspecialchars()函数
htmlspecialchars()函数将特殊字符转换为HTML实体。它是PHP的内置函数,用于将所有预定义的字符转换为HTML实体。预定义的字符包括:
&
(和号)转换为&
"
(双引号)转换为"
'
(单引号)转换为'
<
(小于号)转换为<
>
(大于号)转换为>
有一个字符串函数htmlspecialchars_decode(),它是htmlspecialchars()函数的反向操作。htmlspecialchars_decode()函数的主要目的是将特殊的HTML实体转换回字符。htmlspecialchars()函数和htmlspecialchars_decode()函数是互为相反的。htmlspecialchars()函数的语法如下:
语法
String htmlspecialchars ( string,flags, encoding,double_encode );
参数
$string: 此参数包含输入字符串。
$flags: 基本上,此参数用于保存一个或多个标志,用于指定如何处理无效的代码单元序列、引号和所使用的文档类型。ENT_COMPAT | ENT_HTML401 是默认值。下表中给出了可用的标志常量:
可用的标志常量
标志常量 | 描述 |
---|---|
ENT_IGNORE | 它丢弃验证失败的字符序列,而不会返回空字符串。 |
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实体。默认情况下会转换所有字符。
描述
htmlspecialchars ( string string [ , intflags = ENT_COMPAT | ENT_HTML401 [ , string
encoding = ini_get ("default_charset") [ , booldouble_encode = TRUE ] ] ] ) : string
有一些字符在HTML中具有特殊意义,如果需要保留它们的含义,必须使用HTML实体来表示。htmlspecialchars()函数会返回进行这些转换后的字符串。如果我们需要翻译所有具有关联命名实体的输入子字符串,则可以使用htmlentities()函数替代htmlspecialchars()。
htmlspecialchars()函数返回的值
它返回转换后的字符串,如果输入字符串无效或包含无效的代码序列,则返回一个空字符串。
htmlspecialchars()的示例
以下是一些htmlspecialchars()函数的示例。
示例1
<? php
//string conversion example of htmlspecialchars () function
str = "This is <i>italic</i> text.";
echo htmlspecialchars(str, ENT_QUOTES); //Will convert both single and double-quotes.
?>
浏览器输出
下面给出的输出是 浏览器输出 的代码。
HTML 输出
上述程序的 HTML 输出将会如下所示-
<DOCTYPE html>
<html>
<body>
This is _italic_ text.
</body>
</html>
可以在浏览器的源文件中查看HTML输出。打开浏览器 -> 更多工具 -> 开发者工具 -> 源文件,并按下Ctrl+P打开源文件。
示例2
<?php
str1= "This is 'PHP'&'Java' program.";
echo htmlspecialchars(str1, ENT_COMPAT); //It will converts only double quotes.
echo "</br>";
echo htmlspecialchars(str1, ENT_QUOTES); // Converts both double and single quotes
echo "</br>";
echo htmlspecialchars(str1, ENT_NOQUOTES); //It will not convert any quotes.
?>
浏览器输出
下面提供的输出是代码的 浏览器输出 。
HTML 输出
可以通过浏览器的查看源代码来查看上述程序的 HTML 输出 ,即 浏览器- > 更多工具 – > 开发者工具 – > 源代码,并按Ctrl+P打开查看源文件。
示例3
<?
str= '"PHP" is much easier than "Java".'. "\n";
echo htmlspecialchars(str); //will converts only double quotes.
echo "</br>";
echo htmlspecialchars(str, ENT_QUOTES); //will converts both single and double quotes.
echo "</br>";
echo htmlspecialchars(str, ENT_NOQUOTES); //will not convert neither single nor double-quotes.
echo "</br>";
?>
浏览器输出
上述程序在浏览器上的输出如下所示:
HTML 输出
以下程序的 HTML 输出将如下所示。
<DOCTYPE html>
<html>
<body>
"PHP" is much easier than "Java".
</br>"PHP" is much easier than "Java".
</br>"PHP" is much easier than "Java".
</br>
</body>
</html>
htmlspecialchars()和htmlentities()函数之间的区别
htmlspecialchars()函数和htmlentities()函数唯一的区别在于htmlspecialchars()函数将特殊字符转换为HTML实体,而htmlentities()函数将所有适用的字符转换为HTML实体。