PHP实例——输出安全的HTML代码

原文:PHP实例——输出安全的HTML代码

//输出安全的htmlfunction h($text, $tags = null){    $text    =    trim($text);    //完全过滤注释    $text    =    preg_replace('/<!--?.*-->/','',$text);    //完全过滤动态代码    $text    =    preg_replace('/<\?|\?'.'>/','',$text);    //完全过滤js    $text    =    preg_replace('/<script?.*\/script>/','',$text);

$text    =    str_replace('[','[',$text);    $text    =    str_replace(']',']',$text);    $text    =    str_replace('|','|',$text);    //过滤换行符    $text    =    preg_replace('/\r?\n/','',$text);    //br    $text    =    preg_replace('/<br(\s\/)?'.'>/i','[br]',$text);    $text    =    preg_replace('/(\[br\]\s*){10,}/i','[br]',$text);    //过滤危险的属性,如:过滤on事件lang js    while(preg_match('/(<[^><]+)( lang|on|action|background|codebase|dynsrc|lowsrc)[^><]+/i',$text,$mat)){        $text=str_replace($mat[0],$mat[1],$text);    }    while(preg_match('/(<[^><]+)(window\.|javascript:|js:|about:|file:|document\.|vbs:|cookie)([^><]*)/i',$text,$mat)){        $text=str_replace($mat[0],$mat[1].$mat[3],$text);    }    if(empty($tags)) {        $tags = 'table|td|th|tr|i|b|u|strong|img|p|br|div|strong|em|ul|ol|li|dl|dd|dt|a';    }    //允许的HTML标签    $text    =    preg_replace('/<('.$tags.')( [^><\[\]]*)>/i','[\1\2]',$text);    //过滤多余html    $text    =    preg_replace('/<\/?(html|head|meta|link|base|basefont|body|bgsound|title|style|script|form|iframe|frame|frameset|applet|id|ilayer|layer|name|script|style|xml)[^><]*>/i','',$text);    //过滤合法的html标签    while(preg_match('/<([a-z]+)[^><\[\]]*>[^><]*<\/\1>/i',$text,$mat)){        $text=str_replace($mat[0],str_replace('>',']',str_replace('<','[',$mat[0])),$text);    }    //转换引号    while(preg_match('/(\[[^\[\]]*=\s*)(\"|\')([^\2=\[\]]+)\2([^\[\]]*\])/i',$text,$mat)){        $text=str_replace($mat[0],$mat[1].'|'.$mat[3].'|'.$mat[4],$text);    }    //过滤错误的单个引号    while(preg_match('/\[[^\[\]]*(\"|\')[^\[\]]*\]/i',$text,$mat)){        $text=str_replace($mat[0],str_replace($mat[1],'',$mat[0]),$text);    }    //转换其它所有不合法的 < >    $text    =    str_replace('<','&lt;',$text);    $text    =    str_replace('>','&gt;',$text);    $text    =    str_replace('"','&quot;',$text);     //反转换    $text    =    str_replace('[','<',$text);    $text    =    str_replace(']','>',$text);    $text    =    str_replace('|','"',$text);    //过滤多余空格    $text    =    str_replace('  ',' ',$text);    return $text;}
时间: 2024-09-14 19:48:44

PHP实例——输出安全的HTML代码的相关文章

PHP输出九九乘法表代码实例

 这篇文章主要介绍了PHP输出九九乘法表代码实例,本文直接给出实现代码,需要的朋友可以参考下     ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/

asp.net得到本机数据库实例的两种方法代码

这篇文章介绍了asp.net得到本机数据库实例的两种方法代码,有需要的朋友可以参考一下   复制代码 代码如下: <%@ Page Language="C#" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <scri

c-C语言输出数字团,代码为什么出现Segmentation fault,求解释并纠错??

问题描述 C语言输出数字团,代码为什么出现Segmentation fault,求解释并纠错?? //题目:输出字符串里数字团,以及个数.比如89cy129 //就输出89,129,一共2个数. 代码在这个百度知道的问题上:well,看来百度知道上面没有人会做? 跪谢!!! 源代码: include int main() { int a[80],i=0,*pa,an=0; char str[80],*pstr=str; void getnum(char pstr); gets(str); get

javascript-请问如何做一个输出结果的JS 代码?

问题描述 请问如何做一个输出结果的JS 代码? 我这里一个表单,左边的灰色框是输出结果的,只要我点加入订阅的时候 结果就被填写到框里面去,但是如果有其中一项没有选的话就会有一个提示是第几项没有被填写,请问如何做呢? 原文 http://zhidao.baidu.com/question/572891138.html 解决方案 左边的框里加入几项隐藏input,当点击的时候除了在左边显示还要给hidden中赋值,最后判断哪个hidden为空就是没有选.

PHP输出九九乘法表代码实例_php实例

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

php输出压缩HTML页面代码实例程序

对于服务器输出的 HTML 代码,是否也可以进行压缩呢? 下面就是一个对 HTML 进行压缩的函数:    代码如下 复制代码 function wpjam_minify_html($html) {     $search = array(         '/>[^S ]+/s',  // 删除标签后面空格         '/[^S ]+</s',  // 删除标签前面的空格         '/(s)+/s'       // 将多个空格合并成一个     );     $replace

php随机输出名人名言的代码_php实例

那么这个随机名人名言的功能是如何实现的呢? 其实很简单,只需要一个字符串变量,这里面放所有要随机展现的名人名言,然后用到explode函数分解成数组,再用rand随机数生成一个值,输出这个数组中的某一句. 直接上代码: says.php 复制代码 代码如下: <?php function random_str () { $poems="人生的价值,并不是用时间,而是用深度去衡量的.-- 列夫·托尔斯泰 三人行,必有我师焉.择其善者而从之,其不善者而改之.--孔子 人生不是一种享乐,而是一桩

PHP是如何输出压缩的 HTML代码

function wpjam_minify_Html($Html) {     return preg_replace(         $search = array(             '/\>[^\S ]+/s',  // 删除标签后面空格             '/[^\S ]+\</s',  // 删除标签前面的空格             '/(\s)+/s'       // 将多个空格合并成一个         ),          array(           

asp.net 上传下载输出二进制流实现代码_实用技巧

复制代码 代码如下: using System; using System.Collections; using System.Configuration; using System.Data; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls;