总结php删除html标签和标签内的内容的方法
来源:https://www.cnblogs.com/shaoguan/p/7336984.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:需要保留的指定标签,可以写多个;
echo strip_tags($str,'<p><a>'); //输出:<p>这里是p标签</p><a href="">这里是a标签</a>
此函数的优点是简单粗暴;
但是缺点也很明显;
如果有一大堆标签;
而我只是想删除指定的某一个;
那要写很多需要保留的标签;
所以有了第二个方法;
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);
return $data;
}
echo strip_html_tags(array('p','img'),$str);
//输出:<div>这里是p标签<a href="">这里是a标签</a><br></div>;
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.'>/';
$html[]='/<'.$tag.'.*?>/';
}
$data=preg_replace($html,'',$str);
return $data;
}
echo strip_html_tags(array('a','img'),$str);
//输出<div><p>这里是p标签</p><br></div>
很多网站文章里面会带上网站名和链接;
比如<a href="http://www.baijunyao.com">白俊遥博客</a>;
这个函数就是专治这种;
别拿这个函数采集本站啊;
不然保证不打死你;
4:终极函数,删除指定标签;删除或者保留标签内的内容;
使用方法:strip_html_tags($tags,$str,$content);
$tags:需要删除的标签(数组格式)
$str:需要处理的字符串;
$ontent:是否删除标签内的内容 0保留内容 1不保留内容
/**
* 删除指定标签
*
* @param array $tags 删除的标签 数组形式
* @param string $str html字符串
* @param bool $content true保留标签的内容text
* @return mixed
*/
function stripHtmlTags($tags, $str, $content = true)
{
$html = [];
// 是否保留标签内的text字符
if($content){
foreach ($tags as $tag) {
$html[] = '/(<' . $tag . '.*?>(.|\n)*?<\/' . $tag . '>)/is';
}
}else{
foreach ($tags as $tag) {
$html[] = "/(<(?:\/" . $tag . "|" . $tag . ")[^>]*>)/is";
}
}
$data = preg_replace($html, '', $str);
return $data;
}
//输出<div><p>这里是p标签</p><img src="" alt="这里是img标签"><br></div>;
前面扯了那么多;
其实最后这个函数才是干货;
一口气搞定各种标签删除的疑难杂症不费劲;
别看下面这张截图了;
无非带点颜色好看;
我主要是拿来凑图当文章封面的;
总结php删除html标签和标签内的内容的方法的更多相关文章
- day45——html常用标签、head内常用标签
day45 MySQL内容回顾 数据库 DBMS mysql -RDBMS 关系型 数据库分类 关系型:mysql\oracle\sqlserver\access 非关系型:redis,mongodb ...
- 1、前端--HTML简介、head内常见标签、body内常见标签(特殊符号、div、span、a、img、列表、表格table、表单form)、标签两大属性
今日内容 HTML简介 HTML是构造网页的骨架>>>:几乎所有的网站都是由HTML构建而成 HTML:超文本标记语言 # 不是一门编程语言 没有任何的逻辑 只有固定的标记功能 &q ...
- dedecms删除没有文章的标签
要批量的删除织梦TAG标签,那我们就只能在数据库里做修改了. 登录数据库,在数据库里执行以下SQL语句: delete FROM dede_tagindex where typeid not in ( ...
- 正则表达式删除指定的HTML 标签
1.抓取某网页的数据后(比如描述),如果照原样显示的话,可能会因为它里面包含没有闭合的HTML标签而打乱了格式,也可能它里面用了比较让人 "费解" 的HTML标签,把预订的格式搅乱 ...
- css块级标签,行内标签,行内块标签的转换(2)
css块级标签,行内标签,行内块标签的转换 版权声明 本文原创作者:雨点的名字 作者博客地址:https://home.cnblogs.com/u/qdhxhz/ 在基础1中,我详细讲 ...
- HTML开发之(块级标签,行内标签,行内块标签)
显示模式的特性: 主要分为两大类: 块级元素:独占一行,对宽高的属性值生效:如果不给宽度,块级元素就默认为浏览器的宽度,即就是100%宽: 行内元素:可以多个标签存在一行,对宽高属性值不生效,完全靠内 ...
- C#正则_取出标签内的内容(非贪婪)
using System.Text.RegularExpressions; /// <summary> /// 执行正则提取出值 /// </summar ...
- asp.net正则表达式删除指定的HTML标签的代码
抓取某网页的数据后(比如描述),如果照原样显示的话,可能会因为它里面包含没有闭合的HTML标签而打乱了格式,也可能它里面用了比较让人 费解 的HTML标签,把预订的格式搅乱. 如果全盘删除里面的 HT ...
- CSS标签内多余内容隐藏
CSS: <style> .mazey{width:100px;} .nowrap{overflow:hidden;text-overflow:ellipsis;white-space:n ...
随机推荐
- SSH免密配置
1. 在三个节点生成秘钥cd ~/.sshssh-keygen -t rsa 2.合并三个节点的密码cat id_rsa.pub >> authorized_keysssh postgre ...
- 爬虫简介和requests模块
目录 爬虫介绍 requests模块 requests模块 1.requests模块的基本使用 2.get 请求携带参数,调用params参数,其本质上还是调用urlencode 3.携带header ...
- JS中this指向问题和改变this指向
首先必须要说的是,this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上this的最终指向的是那个调用它的对象(这句话有些问题,后面会解释为什么会有问题,虽然 ...
- C#通用类库整理--序列化类
程序员在编写应用程序的时候往往要将程序的某些数据存储在内存中,然后将其写入某个文件或是将它传输到网络中的另一台计算机上 以实现通讯.这个将程序数据转化成能被存储并传输的格式的过程被称为"序列 ...
- Html 慕课园编程练习9-22
题目要求: 制作一个表格,显示班级的学生信息. 要求: 1. 鼠标移到不同行上时背景色改为色值为 #f2f2f2,移开鼠标时则恢复为原背景色 #fff 2. 点击添加按钮,能动态在最后添加一行 3. ...
- 软件——Hexo-NexT配置个人博客
一.安装NexT Hexo 安装主题的方式非常简单,只需要将主题文件拷贝至站点目录的 themes 目录下, 然后修改下配置文件即可.具体到 NexT 来说,安装步骤如下. 1.克隆最新版本 在终端窗 ...
- 【数据库测试工具】认识Sysbench
本文基于课堂PPT笔记整理,主要介绍一下Sysbench及其简单使用,实验代码部分在代码中有重点注释,不另作说明. 一,基准测试 什么是数据库的基准测试? 数据库的基准测试是对数据库的性能指标进行定量 ...
- Shell:Day03笔记
编程原理:1.编程结束 驱动 硬件默认是不能使用的 CPU控制硬件 不同的厂家硬件设备之间需要进行指令沟通,就需要驱动程序来进行“翻译” 编程语言的分类: 高级语言.超高级语言需要翻 ...
- 微信小程序之界面交互反馈
交互反馈就是在用户出发某事件之后,给用户一个反馈信息,这要是一个很友好的习惯. 在小程序中是通过一下几种方式实现的: 1.wx.showToast()方法 showToast: function (p ...
- Centos7.x & RedHat7.x系统忘记 root 密码解决办法
重启系统进入引导页面 先将机器重启 根据提示按下e进入内核编辑页面 找到linux16参数行,并在行尾加上rd.break,之后按下Ctrl+X重启 如上图所示,重启之后将进入救援模式. 这是依次输入 ...