首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

htmlspecialchars

(PHP 4, PHP 5, PHP 7)

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

描述

代码语言:javascript
复制
string htmlspecialchars ( string $string [, int $flags = ENT_COMPAT | ENT_HTML401 [, string $encoding = ini_get("default_charset") [, bool $double_encode = true ]]] )

某些字符在HTML中有特殊意义,如果要保留它们的含义,应该用HTML实体表示。该函数返回一个包含这些转换的字符串。如果您需要所有具有关联命名实体的输入子字符串进行翻译,请改用htmlentities()。

如果传递给此函数的输入字符串和最终文档共享相同的字符集,则此函数足以准备输入以包含在HTML文档的大多数上下文中。但是,如果输入可以表示未在最终文档字符集中编码的字符,并且您希望保留这些字符(作为数字或命名实体),则此函数和htmlentities()(仅编码具有命名实体的子字符串等同)可能不足。您可能必须改用mb_encode_numericentity()。

字符

替代

&(&符号)

“(双引号)

“,除非设置了ENT_NOQUOTES

'(单引号)

'(对于ENT_HTML401)或'(对于ENT_XML1,ENT_XHTML或ENT_HTML5),但仅当设置了ENT_QUOTES时

<(小于)

<

(好于)

>

参数

string

正在转换的字符串。

flags

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

常数名称

描述

ENT_COMPAT

将转换双引号并单独留下单引号。

ENT_QUOTES

将转换双引号和单引号。

ENT_NOQUOTES

将留下双重和单引号未转换。

ENT_IGNORE

无声地丢弃无效的代码单元序列,而不是返回空字符串。不鼓励使用这个标志,因为它可能有安全隐患。

ENT_SUBSTITUTE

用Unicode替换字符U + FFFD(UTF-8)或 (否则)替换无效的代码单元序列,而不是返回空字符串。

ENT_DISALLOWED

用Unicode替换字符U + FFFD(UTF-8)或 (否则)替换给定文档类型的无效代码点,而不是保持原样。例如,这可能对确保具有嵌入式外部内容的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-1ISO-8859-15UTF-8cp866cp1251cp1252KOI8-R实际上是等同的,只要其string本身对编码有效,受到htmlspecialchars()影响的字符在所有这些编码中占据相同的位置。

支持以下字符集:

字符集

别名

描述

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())的检测。不建议。

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

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.3

double_encode参数被添加。

例子

示例#1 htmlspecialchars()示例

代码语言:javascript
复制
<?php
$new = htmlspecialchars("<a href='test'>Test</a>", ENT_QUOTES);
echo $new; // &lt;a href=&#039;test&#039;&gt;Test&lt;/a&gt;
?>

注意

注意:请注意,此功能不会转换超出上面列出的任何内容。有关完整的实体转换,请参阅htmlentities()。

注意:

   如果标志值不明确,则适用以下规则:

  • 当ENT_COMPAT,ENT_QUOTES和ENT_NOQUOTES均不存在时,缺省值为ENT_COMPAT。
  • 当存在多于一个ENT_COMPAT,ENT_QUOTES和ENT_NOQUOTES时,ENT_QUOTES采用最高优先级,然后是ENT_COMPAT。
  • 当不存在ENT_HTML401,ENT_HTML5,ENT_XHTML和ENT_XML1时,默认值为ENT_HTML401。
  • 当存在多于一个ENT_HTML401,ENT_HTML5,ENT_XHTML和ENT_XML1时,ENT_HTML5的优先级最高,其次是ENT_XHTML,ENT_HTML401。
  • 当存在多于一个ENT_DISALLOWED,ENT_IGNORE和ENT_SUBSTITUTE时,ENT_IGNORE的优先级最高,其次是ENT_SUBSTITUTE。

扩展内容

  • get_html_translation_table() - 返回htmlspecialchars和htmlentities使用的转换表
  • htmlspecialchars_decode() - 将特殊的HTML实体转换回字符
  • strip_tags() - 从字符串中去除HTML和PHP标签
  • htmlentities() - 将所有适用的字符转换为HTML实体
  • nl2br() - 在字符串中的所有换行符之前插入HTML换行符

← htmlspecialchars_decode

implode →

扫码关注腾讯云开发者

领取腾讯云代金券