Heim  >  Artikel  >  Backend-Entwicklung  >  php删除html标签和标签内的内容的方法总结

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

WBOY
WBOYOriginal
2016-06-20 13:00:46915Durchsuche

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

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

$str='<div>
<p>这里是p标签</p>
<img  alt="php删除html标签和标签内的内容的方法总结" ><a>这里是a标签</a><br>
</div>';

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

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

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

              string:需要处理的字符串;

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

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

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

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>这里是a标签</a><br>
</div>;

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]*?)/';
        }
        $data=preg_replace($html,'',$str);
    } 
    echo strip_html_tags(array('a','img'),$str);
    
   ?>
   //输出<div>
<p>这里是p标签</p>
<img  alt="php删除html标签和标签内的内容的方法总结" ><br>
</div>;

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

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]*?)/';
            }
            $data=preg_replace($html,'',$str);
        }else{
            $html=array();
            foreach ($tags as $tag) {
                $html[]="/(]*>)/i";
            }
            $data=preg_replace($html, '', $str);
        }
        return $data;
    }
    echo strip_html_tags(array('a'),$str,1);
   ?>
   //输出<div>
<p>这里是p标签</p>
<img  alt="php删除html标签和标签内的内容的方法总结" ><br>
</div>;

 


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:php 获取远程文件的大小的方法Nächster Artikel:php webservice 实现