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
被设置. - '<' (小于号) 变为 '<'
- '>' (大于号) 变为 '>'
参数
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; // <a href='test'>Test</a>
?>
注释
Note:
注意这个函数不转换任何超出上面列出的。 For full entity translation, see htmlentities().
相关博文
php 函数 htmlspecialchars用法