去除重复嵌套的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;
}

最新文章

  1. 搭建Nginx+Java环境测试并且运行
  2. 疯狂C#~伴随着我的库存管理¥
  3. 前端工程化开发之yeoman、bower、grunt
  4. 解决ambiguous symbol命名空间中类名、变量名冲突的问题
  5. JAVA格物致知开篇:凡事预则立不预则废
  6. 安装SQL Server 2014
  7. CQL操作
  8. VC++编程中为程序加入启动画面功能
  9. 如何使用adb命令查看android中的数据库
  10. 关于 js 2个数组取差集怎么取
  11. cocos2dx arpg单机手游
  12. Linux BFS简介
  13. IOS上怎样画出1像素的线
  14. 【Swift】学习笔记(一)——熟知 基础数据类型,编码风格,元组,主张
  15. STM32F0的flash读写
  16. nodejs和vue的那些事
  17. vue 移动端日期选择组件 vue-mobile-calendar
  18. EventBus 3.0使用详解
  19. discuz 模板中如何使用方法和语言标签?
  20. Struts2_day01讲义_使用Struts2完成客户列表显示的功能

热门文章

  1. [CSP-S模拟测试]:幻魔皇(数学)
  2. onload in JavaScript
  3. sysf接口的函数【转】
  4. ImageView的src与background及ScaleType
  5. 如何吸引用户打开自己发送的EDM邮件
  6. Delphi XE2 之 FireMonkey 入门(19) - TFmxObject 的子类们(表)
  7. python 正则表达式 re.findall &amp;re.finditer
  8. 027 (H5*) react01
  9. display:table
  10. PHP 登陆失效之后,重新登陆,跳转到失效前界面