网站地图
hnsjyk999.com
三九百科 包罗万象
htmlspecialchars 发布于:

htmlspecialchars() 函数把一些预定义的字符转换为 HTML 实体。语法为:htmlspecialchars(string,quotestyle,character-set).

PHP 从 5.4.0 版本开始把htmlspecialchars() 函数的第三个参数字符串编码的默认值改成了 UTF-8,为了使 PHP 5.4 之前环境中编写的代码能够向前兼容,建议调用 htmlspecialchars 函数的的时候都提供字符串编码参数。比如说PHP代码中的中文编码正好是 GB2312 编码,那么就得htmlspecialchars(string, quotestyle ,'GB2312');

htmlspecialchars

预定义的字符是:

&(和号) 成为&

" (双引号) 成为 "

' (单引号) 成为 '

< (小于) 成为 &lt;

> (大于) 成为 &gt;

htmlspecialchars(string,quotestyle,character-set)

参数

描述

string

必需。规定要转换的字符串。

quotestyle

可选。规定如何编码单引号和双引号。

ENT_COMPAT - 默认。仅编码双引号。

ENT_QUOTES - 编码双引号和单引号。

ENT_NOQUOTES - 不编码任何引号。

character-set

可选。字符串值,规定要使用的字符集。

ISO-8859-1 - 默认。西欧。

ISO-8859-15 - 西欧(增加 Euro 符号以及法语、芬兰语字母)。

UTF-8 - ASCII 兼容多字节 8 比特 Unicode

cp866 - DOS 专用 Cyrillic 字符集

cp1251 - Windows 专用 Cyrillic 字符集

cp1252 - Windows 专用西欧字符集

KOI8-R - 俄语

GB2312 - 简体中文,国家标准字符集

BIG5 - 繁体中文

BIG5-HKSCS - Big5 香港扩展

Shift_JIS - 日语

EUC-JP - 日语

如果不用HTMLSpecialChars,就会导致读取时,要把" <script>"之类的HTML标签“原本”的输出,而这一输出就有漏洞了,万一那个插入数据库的人是黑客,插入的不是一般的字符串,而是 “ <script> <b> <body>”等等之类的东西,读取后,就是一个HTML文档之类的东西,这样,他可以利用这个漏洞欺骗其他人,或者借这个漏洞攻击别人等等,搞个框架跳转到某一网站等等操作。

提示:无法被识别的字符集将被忽略,并由 ISO-8859-1 代替。

<html> <body> <?php

$str = "John &

'Adams'";

echo htmlspecialchars($str, ENT_COMPAT);

echo "<br />";

echo htmlspecialchars($str, ENT_QUOTES);

echo "<br />";

echo htmlspecialchars($str, ENT_NOQUOTES);

?> </body> </html>

代码:

<?php
  $str="<p>123</p>";
  echo $str."<br/>";
  echo htmlspecialchars($str);
  ?>

结果:

123


  <p>123</p>

浏览器输出:

John &

'Adams' John &

'Adams' John &

'Adams'

如果在浏览器中查看源代码,会看到这些 HTML:

<html> <body> John &

amp;

'Adams'<br /> John &

amp;

&

#039;

Adams&

#039;

<br /> John &

amp;

'Adams' </body> </html>


相关文章推荐:
字符 | 字符串 | &amp; | 字符串 | 字符串 | 字符集 |