最新的Web开发教程
 

PHP htmlspecialchars() Function

<PHP字符串参考

转换所述预定义字符"<" (less than)">" (greater than)为HTML实体:

<?php
$str = "This is some <b>bold</b> text.";
echo htmlspecialchars($str);
?>

代码的HTML输出将是(View Source)

<!DOCTYPE html>
<html>
<body>
This is some &lt;b&gt;bold&lt;/b&gt; text.
</body>
</html>

代码的浏览器输出将是:

This is some <b>bold</b> text.
运行示例»

定义和用法

htmlspecialchars()函数一些预定义的字符转换为HTML实体。

这些预定义字符是:

  • (ampersand)变成&安培;
  • (double quote)变成&QUOT;
  • ' (single quote)变成&#039;
  • < (less than)变成&LT;
  • > (greater than)变成&GT;

提示:要特殊的HTML实体转换回字符,请使用htmlspecialchars_decode()函数。


句法

htmlspecialchars( string,flags,character-set,double_encode )

参数 描述
string 需要。 指定要转换的字符串
flags 可选的。 指定如何处理引号的,无效的编码和使用的文件类型。

可用报价样式:

  • ENT_COMPAT - 默认。 编码只有双引号
  • ENT_QUOTES - 双进行编码和单引号
  • ENT_NOQUOTES - 不编码任何报价

无效编码:

  • ENT_IGNORE - 忽略的而不是函数返回一个空字符串编码无效。 应避免使用,因为它可能会带来安全隐患。
  • ENT_SUBSTITUTE -替换无效的编码为指定的字符与Unicode替换字符U + FFFD设置(UTF-8)或&#FFFD; 而不是返回一个空字符串。
  • ENT_DISALLOWED -替换的码点,其与一个Unicode替换字符U + FFFD指定DOCTYPE无效(UTF-8)或&#FFFD;

用于指定所使用的文档类型附加标志:

  • ENT_HTML401 - 默认。 处理代码的HTML 4.01
  • ENT_HTML5 - 处理代码作为HTML 5
  • ENT_XML1 - 处理代码,XML 1
  • ENT_XHTML - 处理代码为XHTML
character-set 可选的。 指定哪些字符集使用的字符串。

允许的值是:

  • UTF-8 - 默认。 ASCII兼容多字节8位Unicode
  • ISO-8859-1 - 西欧
  • ISO-8859-15 - 西欧(增加了欧元符号+法语和芬兰字母的ISO-8859-1丢失)
  • CP866 - DOS特定西里尔字符集
  • CP1251 - Windows专用字符集西里尔
  • CP1252 - 西欧Windows特定的字符集
  • KOI8-R - 俄语
  • BIG5 - 中国传统,主要用在台湾
  • GB2312 - 简体中国,国家标准字符集
  • BIG5-HKSCS - 中文与香港扩展
  • SHIFT_JIS - 日本
  • EUC-JP - 日本
  • 的MacRoman - 这是使用的Mac OS字符集

Note:无法识别的字符集将被忽略,并且在之前的PHP 5.4版本的ISO-8859-1代替。 作为PHP 5.4的,它将由UTF-8的取代被忽略。

double_encode 可选的。 一个布尔值,指定编码现有的HTML实体与否。
  • TRUE - 默认。 将一切转换
  • FALSE - 不会编码现有的HTML实体

技术细节

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

如果字符串包含无效的编码,它会返回一个空字符串,除非是ENT_IGNORE或ENT_SUBSTITUTE标志设置
PHP版本: 4+
更新日志: 字符集参数的默认值被改变为UTF-8在PHP 5

ENT_SUBSTITUTE,ENT_DISALLOWED,ENT_HTML401,ENT_HTML5,ENT_XML1和ENT_XHTML在PHP 5.4中添加

ENT_IGNORE在PHP 5.3中添加

在PHP 5.2.3中加入的double_encode参数

在PHP 4.1中添加的字符集参数

更多示例

实施例1

将一些预定义的字符为HTML实体:

<?php
$str = "Jane & 'Tarzan'";
echo htmlspecialchars($str, ENT_COMPAT); // Will only convert double quotes
echo "<br>";
echo htmlspecialchars($str, ENT_QUOTES); // Converts double and single quotes
echo "<br>";
echo htmlspecialchars($str, ENT_NOQUOTES); // Does not convert any quotes
?>

代码的HTML输出将是(View Source)

<!DOCTYPE html>
<html>
<body>
Jane &amp; 'Tarzan'<br>
Jane &amp; &#039;Tarzan&#039;<br>
Jane &amp; 'Tarzan'
</body>
</html>

代码的浏览器输出将是:

Jane & 'Tarzan'
Jane & 'Tarzan'
Jane & 'Tarzan'
运行示例»

实施例2

转换双引号HTML实体:

<?php
$str = 'I love "PHP" .';
echo htmlspecialchars($str, ENT_QUOTES); // Converts double and single quotes
?>

代码的HTML输出将是(View Source)

<!DOCTYPE html>
<html>
<body>
I love &quot;PHP&quot;.
</body>
</html>

代码的浏览器输出将是:

I love "PHP" .
运行示例»

<PHP字符串参考