好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

php完美过滤HTML代码的函数 - php函数

php完美过滤HTML代码的函数

在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事件               ); //开源代码phpfensi.com        $tarr  =  array (            " " ,            "<123>" ,            //如果要直接清除不安全的标签,这里可以留空             "12" ,      );     $str  = preg_replace(  $farr , $tarr , $str );       return   $str ;   } 

这样就可以过滤指定标签了,如果只要过滤过滤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  );   ?>

查看更多关于php完美过滤HTML代码的函数 - php函数的详细内容...

  阅读:36次