zoukankan      html  css  js  c++  java
  • 总结php删除html标签和标签内的内容的方法

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

    $str='<div><p>这里是p标签</p><img src="" alt="这里是img标签"><a href="">这里是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 href="">这里是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 href="">这里是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]*?</'.$tag.'>)/';
            }
            $data=preg_replace($html,'',$str);
        } 
        echo strip_html_tags(array('a','img'),$str);
        
       ?>
       //输出<div><p>这里是p标签</p><img src="" alt="这里是img标签"><br></div>;

        很多网站文章里面会带上网站名和链接,比如<a href="http://www.baijunyao.com">白俊遥博客</a>;这个函数就是专治这种; 别拿这个函数采集本站啊;不然保证不打死你;

    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>;

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

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

    QQ截图20150425005608.jpg

  • 相关阅读:
    mysql 之 union 分类: database 测试 2014-02-12 11:59 218人阅读 评论(0) 收藏
    MySql模糊查询like通配符使用详细介绍 分类: database 测试 2014-02-12 10:19 6829人阅读 评论(1) 收藏
    sed(查找替换) 与awk(提取字段) 分类: ubuntu 测试 2014-02-11 12:08 4074人阅读 评论(0) 收藏
    Linux命令行uniq 分类: ubuntu 测试 2014-02-10 17:52 341人阅读 评论(0) 收藏
    n&1判断奇偶 分类: python基础学习 测试 2014-02-10 15:41 636人阅读 评论(0) 收藏
    vue-cli安装
    input事件
    Edusohu搭建
    Ngxin代理服务基本概述
    五种IO模型---转载
  • 原文地址:https://www.cnblogs.com/shuaibai123/p/4461762.html
Copyright © 2011-2022 走看看