去除重复嵌套的html标签函数
2024-09-02 14:51:25
去除重复嵌套的html标签
function strip_multi_tags($str, $tag = 'div'){
preg_match_all('/<'.$tag.'>|<\/'.$tag.'>/is', $str, $matched);
$divs = $matched[0];
$pairs = array();
foreach($divs as $k => $v){
if($v == '<'.$tag.'>'){
$begin_keys[] = $k;
} else {
$bk = array_pop($begin_keys);
if(!is_null($bk)){
$pairs[$bk] = $k;
}
}
} $datas = preg_split('/<'.$tag.'>|<\/'.$tag.'>/is', $str);
$result = '';
foreach($datas as $k => $v){
if(isset($datas[$k+1]) && strlen(trim($datas[$k+1])) == 0
&& isset($pairs[$k]) && isset($pairs[$k+1])
&& ($k+1 + $pairs[$k+1]) == ($k + $pairs[$k]))
{
unset($divs[$k], $divs[$pairs[$k]]);
}
$result .= (strlen(trim($v))? $v: ''). (isset($divs[$k])? $divs[$k]: '');
}
return $result;
}
最新文章
- 搭建Nginx+Java环境测试并且运行
- 疯狂C#~伴随着我的库存管理¥
- 前端工程化开发之yeoman、bower、grunt
- 解决ambiguous symbol命名空间中类名、变量名冲突的问题
- JAVA格物致知开篇:凡事预则立不预则废
- 安装SQL Server 2014
- CQL操作
- VC++编程中为程序加入启动画面功能
- 如何使用adb命令查看android中的数据库
- 关于 js 2个数组取差集怎么取
- cocos2dx arpg单机手游
- Linux BFS简介
- IOS上怎样画出1像素的线
- 【Swift】学习笔记(一)——熟知 基础数据类型,编码风格,元组,主张
- STM32F0的flash读写
- nodejs和vue的那些事
- vue 移动端日期选择组件 vue-mobile-calendar
- EventBus 3.0使用详解
- discuz 模板中如何使用方法和语言标签?
- Struts2_day01讲义_使用Struts2完成客户列表显示的功能
热门文章
- [CSP-S模拟测试]:幻魔皇(数学)
- onload in JavaScript
- sysf接口的函数【转】
- ImageView的src与background及ScaleType
- 如何吸引用户打开自己发送的EDM邮件
- Delphi XE2 之 FireMonkey 入门(19) - TFmxObject 的子类们(表)
- python 正则表达式 re.findall &;re.finditer
- 027 (H5*) react01
- display:table
- PHP 登陆失效之后,重新登陆,跳转到失效前界面