htmlspecialchars

(PHP 4, PHP 5)

htmlspecialchars — 转换特殊字符为HTML字符编码
 

说明

string htmlspecialchars ( string $string [, int $flags = ENT_COMPAT | ENT_HTML401 [, string $encoding = 'UTF-8' [, bool $double_encode = true ]]] )
 

某些字符在HTML中有特殊意义, 并且应该通过HTML字符编码代表,如果他们想要保存他们的含义。 这个函数用这些转换返回一个字符串. 如果你要求所有HTML字符编码被翻译, 用htmlentities() 代替.

调用htmlspecialchars() 是足够的 如果编码支持所有字符 在输入字符串中 (例如 UTF-8 但也可能是 ISO-8859-1 当只有 ISO-8859-1 输入时). htmlentities() 需要被调用 如果输出编码不支持所有字符在 输入字符串中。

这个函数是有效预防用户提供的文本包含HTML标记,如在一块消息板或留言本应用程序.

 以下字符将被转换:

  • '&' (&号) 变为 '&'
  • '"' (双引号) 变为 '"' 当 ENT_NOQUOTES没有设置.
  • "'" (单引号) 变为 ''' 只有当 ENT_QUOTES被设置.
  • '<' (小于号) 变为 '&lt;'
  • '>' (大于号) 变为 '&gt;'

 

参数

 

string
转换的字符串.

flags
以下flags的一个或多个的位掩码, 指定如何处理引号,无效的代码单元序列以及使用的文档类型。 默认为 ENT_COMPAT | ENT_HTML401.

有效 flags 常量
常量名 说明
ENT_COMPAT 将转换双引号留下单引号。
ENT_QUOTES 将转换双引号和单引号。
ENT_NOQUOTES 单引号和双引号都不转换.
ENT_IGNORE 默默地丢弃无效的代码单元序列代替返回一个空字符串. 使用这个标志是不赞成的,因为它可能有安全隐患.
ENT_SUBSTITUTE 替换 无效的代码单元序列 用一个Unicode替换字符 U+FFFD (UTF-8) 或者 &#FFFD; (否则) 代替返回一个空字符串.
ENT_DISALLOWED 为指定文档类型替换无效的代码点用一个Unicode替换字符 U+FFFD (UTF-8) or &#FFFD; (否则) 代替依原样留下它们. 这可能有用, 例如, 确保XML文档的规范化 用嵌入的外部内容.
ENT_HTML401 处理代码为 HTML 4.01.
ENT_XML1 处理代码为 XML 1.
ENT_XHTML 处理代码为 XHTML.
ENT_HTML5 处理代码为 HTML 5.

  

encoding
定义编码用于转换. 如果省略, 这个参数的默认值是ISO - 8859 - 1 在 PHP 5.4.0之前的版本,  是UTF-8 从 PHP 5.4.0 起.

这个函数的目的, 编码 ISO-8859-1, ISO-8859-15, UTF-8, cp866, cp1251, cp1252, 和 KOI8-R 实际上是等价的, 假如 string 本身是有效的编码, 同样这些字符受htmlspecialchars()影响,占有同样的位置在所有这些编码里

以下字符集被支持:

支持的字符集列表
字符集 别名 描述
ISO-8859-1 ISO8859-1 西欧,Latin-1
ISO-8859-5 ISO8859-5 很少用的西里尔字母字符集 (Latin/Cyrillic).
ISO-8859-15 ISO8859-15 西欧,Latin-9。增加欧元符号,法语和芬兰语字母在 Latin-1(ISO-8859-1) 中缺失。
UTF-8   ASCII 兼容的多字节 8 位 Unicode。
cp866 ibm866, 866 DOS 特有的西里尔编码。本字符集在 4.3.2 版本中得到支持。
cp1251 Windows-1251, win-1251, 1251 Windows 特有的西里尔编码。本字符集在 4.3.2 版本中得到支持。
cp1252 Windows-1252, 1252 Windows 特有的西欧编码。
KOI8-R koi8-ru, koi8r 俄语。
BIG5 950 繁体中文,主要用于中国台湾省。 
GB2312 936 简体中文,中国国家标准字符集。
BIG5-HKSCS   繁体中文,附带香港扩展的 Big5 字符集。
Shift_JIS SJIS, SJIS-win, cp932, 932 日语
EUC-JP EUCJP, eucJP-win 日语
MacRoman   用于Mac OS的字符集.
''   An empty string activates detection from script encoding (Zend multibyte), default_charset and current locale (see nl_langinfo() and setlocale()), in this order. 不推荐.

Note: 其它任何字符集都不能被认可. 默认的编码将用来替代 并发出一个警告。

 

double_encode
当double_encode是关闭的 PHP将不编码的现存的HTML字符编码,默认是转换一切。

 

返回值

转换后的字符串。

如果输入字符串包含无效的代码单元序列在给定的编码里, 一个空字符串将被返回,除非要么ENT_IGNORE或ENT_SUBSTITUTE flags被设置。

更新日志

 

版本 说明
5.4.0 The default value for the encoding parameter was changed to UTF-8.
5.4.0 The constants ENT_SUBSTITUTE, ENT_DISALLOWED, ENT_HTML401, ENT_XML1, ENT_XHTML and ENT_HTML5 were added.
5.3.0 The constant ENT_IGNORE was added.
5.2.3 The double_encode parameter was added.
4.1.0 The encoding parameter was added.

  

范例

 

Example #1 htmlspecialchars() example

<?php
$new = htmlspecialchars("<a href='test'>Test</a>", ENT_QUOTES);
echo $new; // &lt;a href=&#039;test&#039;&gt;Test&lt;/a&gt;
?>

 

注释

Note:

注意这个函数不转换任何超出上面列出的。 For full entity translation, see htmlentities().

 

php 函数 htmlspecialchars用法
标签: