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

走自己的路,让别人说去吗!美好的日子带来快乐,阴暗的日子带来经验,所以别对任何一天怀有遗憾。

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

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

PHP htmlspecialchars() 函数

htmlspecialchars():可以把预定义的字符转换为 HTML 实体。

语法:

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

参数:

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

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

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

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

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

示例1:

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

输出结果,如下图所示:

QQ截图20190709122721.jpg

示例2:

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

输出结果,如下图所示:

QQ截图20190709123839.jpg

注意:

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

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

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

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

示例1:

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

输出结果:

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

查看源码结果:

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

注意:

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

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

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

示例代码:

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

输出结果:

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

查看源码的结果:

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

注意:

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

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

补充:

HTML实体是什么?

1、在 HTML 中,某些字符是预留的。

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

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

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

预定义的字符有哪些?

1、& (和号)成为 &

2、” (双引号)成为 ”

3、’ (单引号)成为 ‘

4、< (小于)成为 < > (大于)成为 >

到此这篇关于php中把预定义的字符转换成HTML实体就介绍到这了。人的美不在外貌、 衣服和发式,而在于它的本身,在于他的心。要是人没有内心的美,我们会常常厌恶他漂亮的外表。更多相关php中把预定义的字符转换成HTML实体内容请查看相关栏目,小编编辑不易,再次感谢大家的支持!

您可能有感兴趣的文章
PHP性能优化案例分享

PHP实现短信验证码的发送次数限制

PHP中的异常处理机制深入讲解

PHP常见七种算法合集代码实例

PHP微信扫描二维码关注公众号后自动登录第三方网站