PHP中如何使用htmlspecialchars字符串函数-创新互联

目前创新互联公司已为成百上千的企业提供了网站建设、域名、虚拟主机绵阳服务器托管、企业网站设计、安徽网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。

PHP中如何使用htmlspecialchars 字符串函数,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

定义和用法

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

语法:

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_QUOTES 后, ' (如果是 ENT_HTML401) ,或者 ' (如果是 ENT_XML1、 ENT_XHTML 或 ENT_HTML5)。
< (小于)<
> (大于)>

参数

参数必需的描述
string待转换的字符串
flags以下一个或多个标志的位掩码,指定如何处理引号以及要使用的文档类型。 默认为ENT_COMPAT | ENT_HTML401
  • ENT_COMPAT 将转换双引号并单独留下单引号。

  • ENT_QUOTES 将转换双引号和单引号。

  • ENT_NOQUOTES 将双引号和单引号保留为未转换。

  • ENT_IGNORE 静默丢弃无效的代码单元序列,而不是返回空字符串。 不建议使用此标记, 因为它» 可能有安全影响。

  • ENT_SUBSTITUTE 替换无效的代码单元序列为 Unicode 代替符(Replacement Character), U+FFFD (UTF-8) 或者 � (其他),而不是返回空字符串。

  • ENT_DISALLOWED 为文档的无效代码点替换为 Unicode 代替符(Replacement Character): U+FFFD (UTF-8),或 �(其他),而不是把它们留在原处。 比如以下情况下就很有用:要保证 XML 文档嵌入额外内容时格式合法。

  • ENT_HTML401 将代码处理为HTML 4.01。

  • ENT_XML1 将代码处理为XML 1。

  • ENT_XHTML 将代码处理为XHTML。

  • ENT_HTML5 将代码处理为HTML 5。

encoding定义转换字符时使用的编码的可选参数。如果省略,编码的默认值将根据使用的PHP版本而变化。在php 5.6及更高版本中,默认的_charset配置选项用作默认值。php 5.4和5.5将使用utf-8作为默认值。PHP的早期版本使用ISO-8859-1。尽管此参数在技术上是可选的,但是如果您使用的是php 5.5或更早版本,或者如果您的默认_charset配置选项对于给定的输入设置不正确,则强烈建议您为代码指定正确的值。本函数使用效果上,如果 string 对以下字符编码是有效的, ISO-8859-1、 ISO-8859-15、 UTF-8、 cp866、 cp1251、 cp1252、 KOI8-R 将具有相同的效果。 也就是说,在这些编码里, 受 htmlspecialchars() 影响的字符会占据相同的位置。
double_encode关闭 double_encode 时,PHP 不会转换现有的 HTML 实体, 默认是全部转换。

encoding支持的字符编码:

字符集别名描述
ISO-8859-1ISO8859-1西欧,Latin-1
ISO-8859-5ISO8859-5Little used cyrillic charset (Latin/Cyrillic).
ISO-8859-15ISO8859-15西欧,Latin-9。增加欧元符号,法语和芬兰语字母在 Latin-1(ISO-8859-1) 中缺失。
UTF-8
ASCII 兼容的多字节 8 位 Unicode。
cp866ibm866, 866DOS 特有的西里尔编码。本字符集在 4.3.2 版本中得到支持。
cp1251Windows-1251, win-1251, 1251Windows 特有的西里尔编码。本字符集在 4.3.2 版本中得到支持。
cp1252Windows-1252, 1252Windows 特有的西欧编码。
KOI8-Rkoi8-ru, koi8r俄语。本字符集在 4.3.2 版本中得到支持。
BIG5950繁体中文,主要用于中国台湾省。
GB2312936简体中文,中国国家标准字符集。
BIG5-HKSCS
繁体中文,附带香港扩展的 Big5 字符集。
Shift_JISSJIS, 932日语
EUC-JPEUCJP日语
MacRoman
Mac OS 使用的字符串。
''
空字符串按此顺序激活脚本编码(Zend multibyte),default_charset和当前语言环境(请参阅nl_langinfo()setlocale())的检测。 不建议。
注意: 其他字符集没有认可。将会使用默认编码并抛出异常。
注意: 本函数不会转换以上列表以外的实体。 完整转换请参见 htmlentities()。
注意: 如果 flags 的设置模糊易混淆,将遵循以下规则:
  • 当 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。

$new = htmlspecialchars("Test", ENT_QUOTES);
echo $new; 
// <a href='test'>Test</a>

相关函数

html_entity_decode() - 将HTML实体转换为相应的字符

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

htmlspecialchars_decode() - 将特殊的 HTML 实体转换回普通字符

htmlentities() - 将字符转换为 HTML 转义字符

关于PHP中如何使用htmlspecialchars 字符串函数问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注创新互联-成都网站建设公司行业资讯频道了解更多相关知识。


名称栏目:PHP中如何使用htmlspecialchars字符串函数-创新互联
网页链接:http://myzitong.com/article/cssgdg.html