php删除html标签和标签内的内容的方法

今天有个项目需要做评论的功能,而评论的功能都希望纯文本的内容就可以了,可就有些不按规矩办事的人,经常来发链接,发广告,最讨厌的就是这样的人了。

1:删除全部或者保留指定html标签(使用php自带的函数(strip_tags)就可以解决了)

 使用方法:strip_tags(string,allow),

         string:需要处理的字符串;

         allow:需要保留的指定标签,可以写多个;

echo strip_tags($str,'<a><b>');

此函数的优点是就比较简单,可以删掉掉标签,但是缺点也有;如果有一大堆标签;而我只是想删除指定的某一个;那要写很多需要保留的标签;


2:删除指定的html标签,都是使用正则表达式(不是系统自带函数)

strip_html_tags($tags,$str);

$tags:需要删除的标签(数组格式)

$str:需要处理的字符串;

function strip_html_tags($tags,$str){ 
        $html=array();
        foreach ($tags as $tag) {
            $html[]="/(<(?:\/".$tag."|".$tag.")[^>]*>)/i";
        }
        $data=preg_replace($html, '', $str); 
 }


3:删除标签和标签的内容,都是使用正则表达式(不是系统自带函数)

  使用方法:strip_html_tags($tags,$str);

  $tags:需要删除的标签(数组格式)

  $str:需要处理的字符串;

 function strip_html_tags($tags,$str){ 
        $html=array();
        foreach ($tags as $tag) {
            $html[]='/(<'.$tag.'.*?>[\s|\S]*?<\/'.$tag.'>)/';
        }
        $data=preg_replace($html,'',$str);
   }


最后把上面的所有功能函数都整合在一起,大家就直接复制调用就可以了。

使用方法:strip_html_tags($tags,$str,$content);

     $tags:需要删除的标签(数组格式)

     $str:需要处理的字符串;

     $ontent:是否删除标签内的内容 0保留内容 1不保留内容

 /**
     * 删除指定的标签和内容
     * @param array $tags 需要删除的标签数组
     * @param string $str 数据源
     * @param string $content 是否删除标签内的内容 默认为0保留内容    1不保留内容
     * @return string
     */
    function strip_html_tags($tags,$str,$content=0){
        if($content){
            $html=array();
            foreach ($tags as $tag) {
                $html[]='/(<'.$tag.'.*?>[\s|\S]*?<\/'.$tag.'>)/';
            }
            $data=preg_replace($html,'',$str);
        }else{
            $html=array();
            foreach ($tags as $tag) {
                $html[]="/(<(?:\/".$tag."|".$tag.")[^>]*>)/i";
            }
            $data=preg_replace($html, '', $str);
        }
        return $data;
    }


本文永久地址:http://www.huanghaiping.com/article/59.html
本文出自 黄海平博客 ,转载时请注明出处及相应链接。

发表我的评论
  

网友最新评论 (0)

暂无评论
返回顶部