html_entity_decode
html_entity_decode
(PHP 4 >= 4.3.0, PHP 5, PHP 7)
html_entity_decode - 将所有HTML实体转换为适用的字符
描述
string html_entity_decode ( string $string [, int $flags = ENT_COMPAT | ENT_HTML401 [, string $encoding = ini_get("default_charset") ]] )
html_entity_decode()与htmlentities()相反,它将字符串中的所有HTML实体转换为适用的字符。
更准确地说,这个函数解码所有的实体(包括所有的数字实体):a)对于所选择的文档类型必须是有效的 - 即对于XML,这个函数不解码可能在某些DTD中定义的命名实体 - 以及b)其中的字符或字符位于与所选编码相关联的编码字符集中并且在所选文档类型中被允许。所有其他实体保持原样。
参数
string
输入字符串。
flags
一个或多个以下标志的位掩码,指定如何处理引号和要使用的文档类型。缺省值是ENT_COMPAT | ENT_HTML401
。
常数名称 | 描述 |
---|---|
ENT_COMPAT | 将转换双引号并单独留下单引号。 |
ENT_QUOTES | 将转换双引号和单引号。 |
ENT_NOQUOTES | 将留下双重和单引号未转换。 |
ENT_HTML401 | 将代码作为HTML 4.01处理。 |
ENT_XML1 | 将代码作为XML处理1。 |
ENT_XHTML | 将代码作为XHTML处理。 |
ENT_HTML5 | 将代码处理为HTML 5。 |
encoding
定义转换字符时使用的编码的可选参数。
如果省略,则编码的默认值因使用的PHP版本而异。 在PHP 5.6和更高版本中,default_charset配置选项用作默认值。 PHP 5.4和5.5将使用UTF-8作为默认值。 早期版本的PHP使用ISO-8859-1。
虽然这个参数在技术上是可选的,但是如果您使用PHP 5.5或更早版本,或者您的default_charset配置选项可能被错误地设置为给定输入,那么强烈建议您为代码指定正确的值。
支持以下字符集:
字符集 | 别名 | 描述 |
---|---|---|
ISO-8859-1 | ISO8859-1 | 西欧,拉丁-1。 |
ISO-8859-5 | ISO8859-5 | 很少使用西里尔文字符(拉丁文/西里尔文)。 |
ISO-8859-15 | ISO8859-15 | 西欧,拉丁9。添加拉丁文-1(ISO-8859-1)中缺少的欧元符号,法文和芬兰文字母。 |
UTF-8 | | ASCII兼容的多字节8位Unicode。 |
CP866 | ibm866,866 | DOS特定的西里尔文字符集。 |
CP1251 | Windows-1251,win-1251,1251 | 特定于Windows的西里尔文字符集。 |
CP1252 | Windows-1252,1252 | 西欧的Windows特定字符集。 |
KOI8-R | koi 8 - ru,koi 8 r | 俄语。 |
BIG5 | 950 | 繁体中文,主要用于台湾。 |
GB2312 | 936 | 简体中文,国家标准字符集。 |
BIG5-HKSCS | | Big5与香港扩展,繁体中文。 |
SHIFT_JIS | SJIS,SJIS-win,cp932,932 | 日语 |
EUC-JP | EUCJP,eucJP-win | 日语 |
的MacRoman | | Mac OS使用的字符集。 |
'' | | 一个空字符串按此顺序激活脚本编码(Zend多字节),default_charset和当前语言环境(请参阅nl_langinfo()和setlocale())的检测。不建议。 |
注意
:任何其他字符集都不被识别。将使用默认编码,并发出警告。
返回值
返回解码的字符串。
更新日志
版 | 描述 |
---|---|
5.6.0 | 编码参数的默认值已更改为default_charset配置选项的值。 |
5.4.0 | 默认编码从ISO-8859-1更改为UTF-8。 |
5.4.0 | 添加了常量ENT_HTML401,ENT_XML1,ENT_XHTML和ENT_HTML5。 |
例子
Example#1 解码HTML实体
<?php
$orig = "I'll \"walk\" the <b>dog</b> now";
$a = htmlentities($orig
$b = html_entity_decode($a
echo $a; // I'll "walk" the <b>dog</b> now
echo $b; // I'll "walk" the <b>dog</b> now
?>
注意
注意
:你可能想知道为什么trim(html_entity_decode('')); 不会将字符串减少为空字符串,这是因为实体不是ASCII码32(它被trim()剥离),而是ASCII码160(0xa0)在默认的ISO 8859-1编码中。
扩展内容
- htmlentities() - 将所有适用的字符转换为HTML实体
- htmlspecialchars() - 将特殊字符转换为HTML实体
- get_html_translation_table() - 返回htmlspecialchars和htmlentities使用的转换表
- urldecode() - 解码URL编码的字符串
← hex2bin
htmlentities →