字符串函数

PHP htmlentities() 函数

主题:PHP 字符串参考上一页|下一页

说明

htmlentities() 函数将所有适用的字符转换为 HTML 实体。

此函数通常会反转 html_entity_decode() 函数的效果。

下表总结了该函数的技术细节。

返回值: 返回编码的字符串。 如果输入字符串在给定的 charset 中包含无效的代码序列,它将返回一个空字符串,除非设置了 ENT_IGNOREENT_SUBSTITUTE 标志。
版本: PHP 4+

语法

htmlentities() 函数的基本语法如下:

htmlentities(string, flags, charset, double_encode);

下面的例子展示了 htmlentities() 函数的作用。

<?php
// 示例字符串
$str = "It's an <b>\"amazing\"</b> story.";

// 编码字符串
$encoded_str = htmlentities($str);
echo $encoded_str;
?>

上述示例的输出将是(查看源代码以获取想法):

It's an &lt;b&gt;&quot;amazing&quot;&lt;/b&gt; story.

但是,在浏览器中,您会看到如下内容:

It's an <b>"amazing"</b> story.

注意: htmlentities() 在所有方面都与 htmlspecialchars() 相同,只是 htmlspecialchars() 仅替换 &, <, 和 >,,具有单引号和双引号选项。 但是 htmlentities() 替换了所有可以用 HTML 字符实体表示的字符。

提示:您可以使用 get_html_translation_table() 函数返回在内部用于 htmlspecialchars()htmlentities() 函数的转换表。


参数

htmlentities() 函数接受以下参数。

参数 说明
string 必填。 指定要编码的字符串。
flags

可选。 指定如何处理引号、无效代码序列以及要使用的文档类型。 您可以指定以下一个或多个标志。

处理引号的可用标志常量是:

  • ENT_COMPAT – 转换双引号,不转换单引号。
  • ENT_QUOTES – 转换双引号和单引号。
  • ENT_NOQUOTES – 不转换双引号和单引号。

用于处理无效代码序列的可用标志常量是:

  • ENT_IGNORE – 静默忽略无效的代码序列,而不是返回空字符串。 避免使用此标志,因为它可能具有安全隐患。
  • ENT_SUBSTITUTE – 用 Unicode 替换字符 U+FFFD (UTF-8) 或 &#FFFD; 替换无效的代码序列 而不是返回一个空字符串。
  • ENT_DISALLOWED – 将对指定文档类型无效的代码序列替换为 Unicode 替换字符 U+FFFD (UTF-8) 或 &#FFFD; 而不是让它们保持原样。

用于指定文档类型的可用标志常量有:

  • ENT_HTML401 – 将代码处理为 HTML 4.01。
  • ENT_HTML5 – 将代码处理为 HTML 5。
  • ENT_XML1 – 将代码处理为 XML 1。
  • ENT_XHTML – 将代码处理为 XHTML。

此参数的默认值为 ENT_COMPAT | ENT_HTML401.

charset

可选。 指定要使用的字符集。 支持的字符集是:

  • UTF-8 – ASCII 兼容多字节 8 位 Unicode。
  • ISO-8859-1 –西欧,拉丁语 1。
  • ISO-8859-5 –很少使用西里尔字符集(拉丁文/西里尔文)。
  • ISO-8859-15 西欧,拉丁语 9。添加了 Latin-1 (ISO-8859-1) 中缺少的欧元符号、法语和芬兰语字母。
  • cp866 – DOS 特定的西里尔字符集。
  • cp1251 –特定于 Windows 的西里尔字符集。
  • cp1252 –西欧的 Windows 特定字符集。
  • KOI8-R –俄语。
  • BIG5 –繁体中文,主要用于台湾。
  • GB2312 –简体中文,国标字符集。
  • BIG5-HKSCS – Big5 带有香港扩展名,繁体中文。
  • Shift_JIS –日语。
  • EUC-JP –日语。
  • MacRoman – Mac OS 使用的字符集。

如果省略此参数,则默认为 default_charset 配置选项的值(在 php.ini 文件中)。

double_encode 可选。 一个布尔值,它指定是否对现有的 html 实体进行编码。 可能的值为 truefalse。 默认值是 true 转换一切。

更多示例

这里有更多示例展示了 htmlentities() 函数的实际工作原理:

以下示例演示了使用此函数处理单引号和双引号。

<?php
// 示例字符串
$str = "I'll \"leave\" tomorrow.";

// 只转换双引号
$a = htmlentities($str, ENT_COMPAT);
echo $a; /* I'll &quot;leave&quot; tomorrow. */

// 转换双引号和单引号
$b = htmlentities($str, ENT_QUOTES);
echo $b; /* I&#039;ll &quot;leave&quot; tomorrow. */

// 不转换任何引号
$c = htmlentities($str, ENT_NOQUOTES);
echo $c; /* I'll "leave" tomorrow. */
?>

但是,在浏览器中,您将始终看到字符串 I'll "leave" tomorrow. 查看示例输出的源代码(右键单击并选择查看页面源代码)以查看实际编码 字符串。

Advertisements