PHP函数nl2br(),htmlspecialchars(),stripslashes(),strip_tags

zxh5566  2016-08-01 19:39   Hits: 

HTML输入表单和URL上附加资源是用户将数据提交给服务器的途径,如果不能很好的处理就有可能成为黑客攻击服务器的入口,例如,用户在发布文章时,在文章中如果包含一些HTML格式标记或javascript的页面转向代码,直接输出显示则一定会使用页面的布局发生改变,因为这些代码被发送到浏览器中,浏览器会按有效代码去解释,所以在PHP脚本中,对用户提交的数据内容一定要先处理,在PHP中提供了全面的HTML相关的字符串格式化函数,可以有效的控制HTML文本输出

1、nl2br()

在浏览器中输出的字符串只能通过HTML的<br>标记换行,而很多人习惯使用\n作为换行符号,但浏览中不识别这个字符串的换行符,即使有多行文本,在浏览器中显示时也只有一行,nl2br()就是在字符串中的每个新行\n之前插入html换行符<br/>

<?php
echo nl2br("one line .\nanother line");
?>

2、函数htmlspecialchars()

如果不希望浏览器直接解析html标记,就需要将html标记中的特殊字符转换成html实体,例如将<转换成&lt;将>转换成&gt;这样html标记浏览器就不会去解析,而是将html文本在浏览器中原样输出,PHP中提供的htmlspecialchars()函数就可以将一些预定义的字符转义成为html实体,此函数用在预防使用者提供的文字中包含了html的标记,像是布告栏或是访客留言板这方面的应用,该函数中第一个参数是带html标记待处理的字符串,为必选参数,第二个参数为可选参数,用开决定引号的转换方式,默认值为ENT_COMPAT将只转换双引号,而保留单引号,ENT_QUOTES将同时转换这两种引号;而ENT_NOQUOTES将不对引号进行转换,第三个参数也是可以选的,用于指定所处理字符串的字符集。

在PHP中还提供了htmlentites()函数,可以将所有非ASCII码的字符转换为对应的实体代码,该函数与htmlspecialchars()函数的使用语法格式一样,但该函数可以转换更多的字符,在处理表单提交的数据时候,不仅要通过前面介绍的函数将HTML的标记符号和一些特殊字符转换为HTML实体,而且还需要对引号进行处理,因为被提交的表单数据中的"'" """ "\"等字符前将被自动加上一个斜线,这是由于PHP配置文件php.ini中的选项magic_quotes_gpc在起作用,默认是打开的,如果不关闭它则要使用函数stripslashes()删除反斜线,如果不处理则将数据保存到数据库中时,有可能会被数据库误当成控制符号而引起错误。函数stripslashes()只有一个被处理的字符串作为处理表单中提交的数据

3、函数strip_tags()
PHP中提供的strip_tags()函数默认就可以删除字符串中所有的html标签,也可以有选择性的删除一些HTML标签,像是布告栏或是访客留言板如果有这方面的应用是相当必要的,例如用户在论坛中发布文章,可以预留一些可以改变字体大小,颜色,粗体,斜体等HTML标记,而删除一些对页面布局有影响的HTML标记,该函数有两个参数,第一个为必选,提供了要处理的字符串,第二个参数是一个可选的HTML标签列表,放入该列表中的HTML标签将被保留,其他的则全部被删除,默认将所有HTML标签删除。

<?php
$str = "<font color='red' size=7>linux</font> <i>apache</i> <u>mysql</u> <b>php</b>";
echo strip_tags($str);
echo strip_tags($str,"<font>");
echo strip_tags($str,"<b><u><i>");
?>

上一篇:PHP去空格函数trim(),字符串填补str_pad()
下一篇:mysql如何主从配置,mysql主从复制原理及实现方法