php中把预定义的字符转换成HTML实体

时间:2019-10-05
阅读:

在PHP的开发过程中,我们往往需要对写入的数据或读取数据库的数据进行过滤后再进行写入或是读取。这样可以大大提高网站的整体安全性,预防一些非法的注入操作等。eQo免费资源网

今天就说一说,PHP中如何把预定义的字符串转换成HTML实体,来防止一些垃圾数据的提交。eQo免费资源网

PHP htmlspecialchars() 函数

htmlspecialchars():可以把预定义的字符转换为 HTML 实体。eQo免费资源网

语法:eQo免费资源网

htmlspecialchars(string,flags,character-set,double_encode)

参数:eQo免费资源网

string:必需。规定要转换的字符串。eQo免费资源网

flags:可选,规定如何处理引号、无效的编码以及使用哪种文档类型,如ENT_COMPAT、ENT_QUOTES、ENT_NOQUOTESeQo免费资源网

character-set:可选,顾名思义字符集,默认utf-8,当然支持很多编码,这里不列举eQo免费资源网

double_encode:可选,一个规定了是否编码已存在的 HTML 实体的布尔值。eQo免费资源网

例:PHP 输出转义后的html标签

示例1:eQo免费资源网

<?php
//飞鸟慕鱼博客
$str = "这是我的博客,网址是: <b>http://www.feiniaomy.com</b>";
//这里直接输出字符
echo $str;
echo '<br/>';
//输出转义后的字符
echo htmlspecialchars($str);
?>

输出结果,如下图所示:eQo免费资源网

QQ截图20190709122721.jpgeQo免费资源网

示例2:eQo免费资源网

<?php
//飞鸟慕鱼博客
$str = '这是我的博客,网址是: <span style="color:red;">http://www.feiniaomy.com</span>';
//这里直接输出字符
echo $str;
echo '<br/>';
//输出转义后的字符
echo htmlspecialchars($str);
?>

输出结果,如下图所示:eQo免费资源网

QQ截图20190709123839.jpgeQo免费资源网

注意:eQo免费资源网

1、在没有使用 htmlspecialchars() 函数前,字符串中的<b></b>是会被浏览器解析的eQo免费资源网

2、使用 htmlspecialchars() 函数后,字符串中<b></b>标签会被转义成实体,被HTML输出eQo免费资源网

3、上面的代码主要作用是: < (小于号)成为 <,>(大于号)成为 >eQo免费资源网

例:PHP 把双引号转换成HTML实体

示例1:eQo免费资源网

<?php
//飞鸟慕鱼博客
$str = '早安,世界!新的一天开始了,你做好"出去"准备了么?';
//这里直接输出字符
echo $str;
echo '<br/>';
//输出转义后的字符
echo htmlspecialchars($str,ENT_QUOTES);
?>

输出结果:eQo免费资源网

早安,世界!新的一天开始了,你做好"出去"准备了么?
早安,世界!新的一天开始了,你做好"出去"准备了么?

查看源码结果:eQo免费资源网

早安,世界!新的一天开始了,你做好"出去"准备了么?
<br/>
早安,世界!新的一天开始了,你做好&quot;出去&quot;准备了么?

注意:eQo免费资源网

1、通过查看源码可以发现,htmlspecialchars()函数把 "(双引号)转化了 &quot;eQo免费资源网

2、如果双引号的转换,htmlspecialchars() 函数的第二个参数应该设置为 ENT_QUOTES(转换双引号和单引号)eQo免费资源网

例:PHP把单引号转换成HTML实体

示例代码:eQo免费资源网

<?php
//飞鸟慕鱼博客
$str = "早安,'my words'!";
//这里直接输出字符
echo $str;
echo '<br/>';
//输出转义后的字符
echo htmlspecialchars($str,ENT_QUOTES);
?>

输出结果:eQo免费资源网

早安,'my words'!
早安,'my words'!

查看源码的结果:eQo免费资源网

早安,'my words'!<br/>
早安,&#039;my words&#039;!

注意:eQo免费资源网

1、php htmlspecialchars()函数会把单引号转换成 &#039;,并被浏览器输出eQo免费资源网

2、转换单号码,htmlspecialchars()函数的第二个参数值为 ENT_QUOTES(转换双引号和单引号)eQo免费资源网

补充:eQo免费资源网

HTML实体是什么?

1、在 HTML 中,某些字符是预留的。eQo免费资源网

2、在 HTML 中不能使用小于号(<)和大于号(>),这是因为浏览器会误认为它们是标签,当然在HTML中还有其他实体eQo免费资源网

3、如果希望正确地显示预留字符,我们必须在HTML源代码中使用字符实体(character entities)。eQo免费资源网

4、如需显示小于号,我们必须这样写:< 或 <使用实体名而不是数字的好处是,名称易于记忆。不过坏处是,浏览器也许并不支持所有实体名称(对实体数字的支持却很好)。eQo免费资源网

预定义的字符有哪些?

1、& (和号)成为 &eQo免费资源网

2、” (双引号)成为 ”eQo免费资源网

3、’ (单引号)成为 ‘eQo免费资源网

4、< (小于)成为 < > (大于)成为 >eQo免费资源网

返回顶部
顶部