文档章节

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

白俊遥
 白俊遥
发布于 2015/04/27 23:23
字数 777
阅读 77
收藏 1

经常扒别人网站文章的坑们;我是指那种批量式采集的压根不看内容的,少不了都会用到删除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


本文为白俊遥原创文章,转载无需和我联系,但请注明来自白俊遥博客baijunyao.com       


© 著作权归作者所有

白俊遥
粉丝 18
博文 58
码字总数 28701
作品 3
朝阳
程序员
私信 提问
几款CMS平台的评测与对比

目前企业做网络营销,首先要建站,通常都是选择一款CMS系统,然后在此基础上进行修改,增加页面。一个好的CMS系统往往决定后期的营销效果。我们选择DEDE、PHPCMS、SuperWinner,进行对比,看...

梁建
2011/02/25
3.3K
3
如何在Vim中选中html标签中和引号的内容

在命令模式下输入‘vit’ 选中光标所在的标签的所有内容 同理使用'dit'可以删除标签中的内容 除了选中和删除html标签中的内容之外,通过vi'或vi"可以分别选中单引号和双引号中的内容, di'或...

喂码呢
2013/09/24
744
0
转载 | DOM系列:修改DOM

通过前面的学习,我们都知道,DOM并不一定要由存在于HTML中的元素组成。我们仅需要使用几行JavaScript代码就可以将HTML元素添加到你的DOM中。而且你也有能力移动周围的元素,甚至删除它们。除...

一个敲代码的前端妹子
2018/06/05
0
0
JS基础-DOM Node节点

DOM 节点 节点(Node) 释义 对象 文档节点 整个文档 Document 对象 元素节点 每个HTML元素 Eelement 对象 文本节点 HTML元素内的文本 Text 对象 属性节点 每个HTML的属性 Attribute 对象 注释...

ZHAO_JH
2018/07/21
11
0
JavaScript(十八):DOM对象

一、 认识DOM DOM(Document Object Model,文档对象模型):定义访问和处理HTML文档的标准方法。DOM 将 HTML 文档呈现为带有 元素、属性和文本的树结构(节点树)。 先来看看下面代码: 将 ...

Agnes2017
2018/10/11
9
0

没有更多内容

加载失败,请刷新页面

加载更多

《Designing.Data-Intensive.Applications》笔记 四

第九章 一致性与共识 分布式系统最重要的的抽象之一是共识(consensus):让所有的节点对某件事达成一致。 最终一致性(eventual consistency)只提供较弱的保证,需要探索更高的一致性保证(stro...

丰田破产标志
今天
6
0
docker 使用mysql

1, 进入容器 比如 myslq1 里面进行操作 docker exec -it mysql1 /bin/bash 2. 退出 容器 交互: exit 3. mysql 启动在容器里面,并且 可以本地连接mysql docker run --name mysql1 --env MY...

之渊
今天
7
0
python数据结构

1、字符串及其方法(案例来自Python-100-Days) def main(): str1 = 'hello, world!' # 通过len函数计算字符串的长度 print(len(str1)) # 13 # 获得字符串首字母大写的...

huijue
今天
5
0
OSChina 周日乱弹 —— 我,小小编辑,食人族酋长

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @宇辰OSC :分享娃娃的单曲《飘洋过海来看你》: #今日歌曲推荐# 《飘洋过海来看你》- 娃娃 手机党少年们想听歌,请使劲儿戳(这里) @宇辰OSC...

小小编辑
今天
1K
11
MongoDB系列-- SpringBoot 中对 MongoDB 的 基本操作

SpringBoot 中对 MongoDB 的 基本操作 Database 库的创建 首先 在MongoDB 操作客户端 Robo 3T 中 创建数据库: 增加用户User: 创建 Collections 集合(类似mysql 中的 表): 后面我们大部分都...

TcWong
今天
40
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部