PHP

htmlentities

htmlentities

(PHP 4, PHP 5, PHP 7)

htmlentities - 将所有适用的字符转换为HTML实体

描述

string htmlentities ( string $string [, int $flags = ENT_COMPAT | ENT_HTML401 [, string $encoding = ini_get("default_charset") [, bool $double_encode = true ]]] )

这个函数与htmlspecialchars()在所有方面都是相同的,除了htmlentities(),所有具有HTML字符实体等价物的字符都被转换为这些实体。

如果你想解码(倒转),你可以使用html_entity_decode()。

参数

string

输入字符串。

flags

一个或多个以下标志的位掩码,指定如何处理引号,无效的代码单元序列和使用的文档类型。缺省值是ENT_COMPAT | ENT_HTML401

常数名称描述
ENT_COMPAT将转换双引号并单独留下单引号。
ENT_QUOTES将转换双引号和单引号。
ENT_NOQUOTES将留下双重和单引号未转换。
ENT_IGNORE无声地丢弃无效的代码单元序列,而不是返回空字符串。不鼓励使用这个标志,因为它可能有安全隐患。
ENT_SUBSTITUTE用Unicode替换字符U + FFFD(UTF-8)或&#FFFD替换无效的代码单元序列; (否则)而不是返回一个空字符串。
ENT_DISALLOWED用Unicode替换字符U + FFFD(UTF-8)或&#FFFD替换给定文档类型的无效代码点; (否则)而不是保持原样。例如,这可能对确保具有嵌入式外部内容的XML文档格式良好有用。
ENT_HTML401将代码作为HTML 4.01处理。
ENT_XML1将代码作为XML处理1。
ENT_XHTML将代码作为XHTML处理。
ENT_HTML5将代码处理为HTML 5。

encoding

定义转换字符时使用的编码的可选参数。

如果省略,则默认值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-1ISO8859-1西欧,拉丁-1。
ISO-8859-5ISO8859-5很少使用西里尔文字符(拉丁文/西里尔文)。
ISO-8859-15ISO8859-15西欧,拉丁9。添加拉丁文-1(ISO-8859-1)中缺少的欧元符号,法文和芬兰文字母。
UTF-8ASCII兼容的多字节8位Unicode。
CP866ibm866,866DOS特定的西里尔文字符集。
CP1251Windows-1251,win-1251,1251特定于Windows的西里尔文字符集。
CP1252Windows-1252,1252西欧的Windows特定字符集。
KOI8-Rkoi 8 - ru,koi 8 r俄语。
BIG5950繁体中文,主要用于台湾。
GB2312936简体中文,国家标准字符集。
BIG5-HKSCSBig5与香港扩展,繁体中文。
SHIFT_JISSJIS,SJIS-win,cp932,932日语
EUC-JPEUCJP,eucJP-win日语
的MacRomanMac OS使用的字符集。
''一个空字符串按此顺序激活脚本编码(Zend多字节),default_charset和当前语言环境(请参阅nl_langinfo()和setlocale())的检测。不建议。

注意:任何其他字符集都不被识别。将使用默认编码,并发出警告。

double_encode

当关闭double_encode时,PHP将不编码现有的html实体。 默认转换一切。

返回值

返回编码的字符串。

如果输入字符串在给定编码中包含无效的代码单元序列,则将返回一个空字符串,除非设置了ENT_IGNORE或ENT_SUBSTITUTE标志。

更新日志

描述
5.6.0编码参数的默认值已更改为default_charset配置选项的值。
5.4.0编码参数的默认值已更改为UTF-8。
5.4.0添加了常量ENT_SUBSTITUTE,ENT_DISALLOWED,ENT_HTML401,ENT_XML1,ENT_XHTML和ENT_HTML5。
5.3.0常量ENT_IGNORE被添加。
5.2.3double_encode参数被添加。

例子

示例#1 一个htmlentities()示例

<?php $str = "A 'quote' is <b>bold</b>"; // Outputs: A 'quote' is &lt;b&gt;bold&lt;/b&gt; echo htmlentities($str // Outputs: A &#039;quote&#039; is &lt;b&gt;bold&lt;/b&gt; echo htmlentities($str, ENT_QUOTES ?>

示例#2 ENT_IGNORE的用法

<?php $str = "\x8F!!!"; // Outputs an empty string echo htmlentities($str, ENT_QUOTES, "UTF-8" // Outputs "!!!" echo htmlentities($str, ENT_QUOTES | ENT_IGNORE, "UTF-8" ?>

扩展内容

  • html_entity_decode() - 将所有HTML实体转换为适用的字符

  • get_html_translation_table() - 返回htmlspecialchars和htmlentities使用的转换表

  • htmlspecialchars() - 将特殊字符转换为HTML实体

  • nl2br() - 在字符串中的所有换行符之前插入HTML换行符

  • urlencode() - URL编码字符串

← html_entity_decode

htmlspecialchars_decode →