php完美过滤HTML代码的函数

例子,使用strip_tags()函数过滤所有html

 代码如下 复制代码

$str = '<a href="#">href</a>';
echo htmlspecialchars($str);
echo strip_tags($str);

输出结果为

&lt;a href=&quot;#&quot;&gt;href&lt;/a&gt;

href

上面函数有一个问题就是包括html标签,img标签都过滤掉了,如果我们希望保留图片怎么办

在网上找到一个函数

 代码如下 复制代码

function uh($str)
 {
     $farr = array(
         "/s+/",                                                                   
                        //过滤多余的空白
         "/<(/?)(script|i?frame|style|html|body|title|link|meta|?|%)([^>]*?)>/isu",
   //过滤 <script 等可能引入恶意内容或恶意改变显示布局的代码,如果不需要插入flash等,还可
 以加入<object的过滤
         "/(<[^>]*)on[a-za-z]+s*=([^>]*>)/isu",                                    
 //过滤网页特效的on事件
     
    );
    $tarr = array(
         " ",
         "<123>",           //如果要直接清除不安全的标签,这里可以留空
         "12",
    );
  $str = preg_replace( $farr,$tarr,$str);
    return $str;
 }

这样就可以过滤指定标签了,上面方法还不会我们可参考下面办法

 

 代码如下 复制代码
 <br>$str=preg_replace("/\s+/", " ", $str); //过滤多余回车 <br>$str=preg_replace("/&lt;[ ]+/si","&lt;",$str); //过滤&lt;__("&lt;"号后面带空格) <br><br>$str=preg_replace("/&lt;\!--.*?--&gt;/si","",$str); //注释 <br>$str=preg_replace("/&lt;(\!.*?)&gt;/si","",$str); //过滤DOCTYPE <br>$str=preg_replace("/&lt;(\/?html.*?)&gt;/si","",$str); //过滤html标签 <br>$str=preg_replace("/&lt;(\/?head.*?)&gt;/si","",$str); //过滤head标签 <br>$str=preg_replace("/&lt;(\/?meta.*?)&gt;/si","",$str); //过滤meta标签 <br>$str=preg_replace("/&lt;(\/?body.*?)&gt;/si","",$str); //过滤body标签 <br>$str=preg_replace("/&lt;(\/?link.*?)&gt;/si","",$str); //过滤link标签 <br>$str=preg_replace("/&lt;(\/?form.*?)&gt;/si","",$str); //过滤form标签 <br>$str=preg_replace("/cookie/si","COOKIE",$str); //过滤COOKIE标签 <br><br>$str=preg_replace("/&lt;(applet.*?)&gt;(.*?)&lt;(\/applet.*?)&gt;/si","",$str); //过滤applet标签 <br>$str=preg_replace("/&lt;(\/?applet.*?)&gt;/si","",$str); //过滤applet标签 <br><br>$str=preg_replace("/&lt;(style.*?)&gt;(.*?)&lt;(\/style.*?)&gt;/si","",$str); //过滤style标签 <br>$str=preg_replace("/&lt;(\/?style.*?)&gt;/si","",$str); //过滤style标签 <br><br>$str=preg_replace("/&lt;(title.*?)&gt;(.*?)&lt;(\/title.*?)&gt;/si","",$str); //过滤title标签 <br>$str=preg_replace("/&lt;(\/?title.*?)&gt;/si","",$str); //过滤title标签 <br><br>$str=preg_replace("/&lt;(object.*?)&gt;(.*?)&lt;(\/object.*?)&gt;/si","",$str); //过滤object标签 <br>$str=preg_replace("/&lt;(\/?objec.*?)&gt;/si","",$str); //过滤object标签 <br><br>$str=preg_replace("/&lt;(noframes.*?)&gt;(.*?)&lt;(\/noframes.*?)&gt;/si","",$str); //过滤noframes标签 <br>$str=preg_replace("/&lt;(\/?noframes.*?)&gt;/si","",$str); //过滤noframes标签 <br><br>$str=preg_replace("/&lt;(i?frame.*?)&gt;(.*?)&lt;(\/i?frame.*?)&gt;/si","",$str); //过滤frame标签 <br>$str=preg_replace("/&lt;(\/?i?frame.*?)&gt;/si","",$str); //过滤frame标签 <br><br>$str=preg_replace("/&lt;(script.*?)&gt;(.*?)&lt;(\/script.*?)&gt;/si","",$str); //过滤script标签 <br>$str=preg_replace("/&lt;(\/?script.*?)&gt;/si","",$str); //过滤script标签 <br>$str=preg_replace("/javascript/si","Javascript",$str); //过滤script标签 <br>$str=preg_replace("/vbscript/si","Vbscript",$str); //过滤script标签 <br>$str=preg_replace("/on([a-z]+)\s*=/si","On\\1=",$str); //过滤script标签 <br>$str=preg_replace("/&amp;#/si","&amp;#",$str); //过滤script标签,如javAsCript:alert( <br>

如果只要过滤过滤html标签,js代码,css样式标签

 代码如下 复制代码

<?php
$str = preg_replace( "@<script(.*?)</script>@is", "", $str );
$str = preg_replace( "@<iframe(.*?)</iframe>@is", "", $str );
$str = preg_replace( "@<style(.*?)</style>@is", "", $str );
$str = preg_replace( "@<(.*?)>@is", "", $str );
?>

这样即可了哦。

时间: 2024-10-23 19:10:55

php完美过滤HTML代码的函数的相关文章

php下过滤HTML代码的函数_php技巧

/*---------------------- 过滤HTML代码的函数 -----------------------*/ function htmlEncode($string) {     $string=trim($string);     $string=str_replace("&","&",$string);     $string=str_replace("'","'",$string);   

php下过滤html代码的函数 提高程序安全性_php技巧

以下为过滤HTML代码的函数: 复制代码 代码如下: function ihtmlspecialchars($string) { if(is_array($string)) { foreach($string as $key => $val) { $string[$key] = ihtmlspecialchars($val); } } else { $string = preg_replace('/&((#(\d{3,5}|x[a-fA-F0-9]{4})|[a-zA-Z][a-z0-9]{

用C#过滤HTML代码的函数

 正好有时间所以用C#写了一段正则表达式,作用是删除 Page 里面Code 中的 HTML标签,这在做采集信息,消除其中的HTML很有用处. 以下是引用片段: publicstringcheckStr(stringhtml) { System.Text.RegularExpressions.Regexregex1=newSystem.Text.RegularExpressions.Regex(@"<script[sS]+</script*>",System.Text

用php过滤危险html代码的函数_php技巧

#用户发布的html,过滤危险代码  function uh($str)  {  $farr = array(  "/\\s+/", //过滤多余的空白  "/<(\\/?)(scrīpt|i?frame|style|html|body|title|link|meta|\\?|\\%)([^>]*?)>/isU", //过滤 <scrīpt 等可能引入恶意内容或恶意改变显示布局的代码,如果不需要插入flash等,还可以加入<object

JS判断网页广告是否被浏览器拦截过滤的代码

 本来现在投广告赚钱也不像前几年好做,现在还大部分浏览器都拦截了广告,很多浏览器还是默认拦截广告,做站长不是一般辛苦啊!目前中小站长大部分收入还是靠广告,广告被拦截,收入自然会大大减少. 目前大部分浏览器的广告拦截规则都是广告黑名单+一些广告字眼匹配,比如百度联盟.搜狗联盟.Google联盟这些就算在广告黑名单里的,一般广告过滤都会过滤掉这些广告联盟代码.剩下的就是广告字眼匹配,比如js地址包含ads.php.ad.js甚至是gg.js都可能会被过滤,360浏览器甚至会把包含ad.gif.960

JS判断网页广告是否被浏览器拦截过滤的代码_javascript技巧

本来现在投广告赚钱也不像前几年好做,现在还大部分浏览器都拦截了广告,很多浏览器还是默认拦截广告,做站长不是一般辛苦啊!目前中小站长大部分收入还是靠广告,广告被拦截,收入自然会大大减少. 目前大部分浏览器的广告拦截规则都是广告黑名单+一些广告字眼匹配,比如百度联盟.搜狗联盟.Google联盟这些就算在广告黑名单里的,一般广告过滤都会过滤掉这些广告联盟代码.剩下的就是广告字眼匹配,比如js地址包含ads.php.ad.js甚至是gg.js都可能会被过滤,360浏览器甚至会把包含ad.gif.960x

php过滤不安全字符函数

php过滤不安全字符函数 function uh($str) {     $farr = array(         "/\s+/",//过滤多余的空白         "/<(\/?)(script|i?frame|style|html|body|title|link|meta|\?|\%)([^>]*?)>/isU",//过滤 <script 等可能引入恶意内容或恶意改变显示布局的代码,如果不需要插入flash等,还可以加入<ob

php实现过滤UBB代码的类

 这篇文章主要介绍了php实现过滤UBB代码的类,涉及php正则表达式的操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下     本文实例讲述了php实现过滤UBB代码的类.分享给大家供大家参考.具体如下: PHP代码如下: 代码如下: class Day{ function ubb($Text) { /// UBB代码转换 //$Text=htmlspecialchars($Text); //$Text=ereg_replace("rn","<br>&quo

c++-阅读别人做的mfc的源代码时应该怎样读啊。那么多代码。函数。变量。

问题描述 阅读别人做的mfc的源代码时应该怎样读啊.那么多代码.函数.变量. 阅读别人做的mfc的源代码时应该怎样读啊.那么多代码.函数.变量.期末要做一个mfc小游戏,由于比较菜就在网上下了几个人家做好的mfc小游戏,想根据人家的源码一点一点仿写..但是由于mfc基础薄弱..读源码又感觉很困难,试过直接复制人家的代码,但是一运行,就全是错误...应该怎样阅读啊..有顺序吗 解决方案 先学习下mfc写程序的基础知识,搞清楚哪些代码是向导生成的,哪些是添加进去的,每个源代码是干嘛的.这样看这种程序