在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></b>"; //这里直接输出字符 echo $str; echo '<br/>'; //输出转义后的字符 echo htmlspecialchars($str); ?>输出功效,如下图所示:
示例2:
<?php //飞鸟慕鱼博客 $str = '这是我的博客,网址是: <span style="color:red;"></span>'; //这里直接输出字符 echo $str; echo '<br/>'; //输出转义后的字符 echo htmlspecialchars($str); ?>输出功效,如下图所示:
留意:
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/> 早安,世界!新的一天开始了,你做好"出去"筹备了么?留意:
1、通过查察源码可以发明,htmlspecialchars()函数把 "(双引号)转化了 "
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/> 早安,'my words'!留意:
1、php htmlspecialchars()函数会把单引号转换成 ',并被欣赏器输出
2、转换单号码,htmlspecialchars()函数的第二个参数值为 ENT_QUOTES(转换双引号和单引号)
增补:
HTML实体是什么?1、在 HTML 中,某些字符是预留的。
2、在 HTML 中不能利用小于号(<)和大于号(>),这是因为欣赏器会误认为它们是标签,虽然在HTML中尚有其他实体
3、假如但愿正确地显示预留字符,我们必需在HTML源代码中利用字符实体(character entities)。
4、如需显示小于号,我们必需这样写:< 或 <利用实体名而不是数字的长处是,名称易于影象。不外弊端是,欣赏器也许并不支持所有实体名称(对实体数字的支持却很好)。
预界说的字符有哪些?1、& (和号)成为 &
2、” (双引号)成为 ”
3、’ (单引号)成为 ‘
4、< (小于)成为 < > (大于)成为 >