Home > Backend Development > PHP Tutorial > 总结php删除html标签和标签内的内容的方法

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

WBOY
Release: 2016-06-23 13:35:58
Original
1367 people have browsed it

经常扒别人网站文章的坑们;我是指那种批量式采集的压根不看内容的,少不了都会用到删除html标签的函数;这里介绍3种不同用途上的方法;

$str='<div><p>这里是p标签</p><img src="" alt="这里是img标签"><a href="">这里是a标签</a><br></div>';
Copy after login

1:删除全部或者保留指定html标签

php自带的函数strip_tags即可满足要求,

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

string:需要处理的字符串;

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

   <?php       echo strip_tags($str,'<p><a>');          ?>   //输出:<p>这里是p标签</p><a href="">这里是a标签</a>
Copy after login

次函数的优点是简单粗暴,但是缺点也很明显;如果有一大堆标签;而我只是想删除指定的某一个;那要写很多需要保留的标签; 所以有了第二个方法;

2:删除指定的html标签

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

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

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

  <?php    function strip_html_tags($tags,$str){         $html=array();        foreach ($tags as $tag) {            $html[]="/(<(?:\/".$tag."|".$tag.")[^>]*>)/i";        }        $data=preg_replace($html, '', $str);     }     echo strip_html_tags(array('p','img'),$str);       ?>   //输出<div>这里是p标签<a href="">这里是a标签</a><br></div>;
Copy after login

3:删除标签和标签的内容

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

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

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

  <?php    function strip_html_tags($tags,$str){         $html=array();        foreach ($tags as $tag) {            $html[]='/(<'.$tag.'.*?>[\s|\S]*?<\/'.$tag.'>)/';        }        $data=preg_replace($html,'',$str);    }     echo strip_html_tags(array('a','img'),$str);       ?>   //输出<div><p>这里是p标签</p><img src="" alt="这里是img标签"><br></div>;
Copy after login

很多网站文章里面会带上网站名和链接,比如白俊遥博客;这个函数就是专治这种; 别拿这个函数采集本站啊;不然保证不打死你;

4:终极函数,删除指定标签;删除或者保留标签内的内容;

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

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

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

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

  <?php    /**     * 删除指定的标签和内容     * @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;    }    echo strip_html_tags(array('a'),$str,1);   ?>   //输出<div><p>这里是p标签</p><img src="" alt="这里是img标签"><br></div>;
Copy after login


前面扯了那么多;其实最后这个函数才是干货;一口气搞定各种标签删除的疑难杂症不费劲;

别看下面这张截图了;无非带点颜色好看,我主要是拿来凑图当文章封面的;



source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template