PHP实现补齐关闭的HTML标签


Posted in PHP onMarch 22, 2016

本文实例讲述了PHP实现补齐关闭的HTML标签。分享给大家供大家参考,具体如下:

很多时候,在我们做文章截取摘要的时候,如果出现HTML的内容,会出现截取的文章没有结束的HTML标签。这样的情况下就会出现页面样式错乱的问题。这 个时候我们需要的就是把缺少的结束标签加批量加上。在www.php.net官网看到一个比较好处理的一个函数,展示如下:

function CloseTags($html)
{
  // strip fraction of open or close tag from end (e.g. if we take first x characters, we might cut off a tag at the end!)
  $html = preg_replace('/<[^>]*$/','',$html); // ending with fraction of open tag
  // put open tags into an array
  preg_match_all('#<([a-z]+)(?: .*)?(?<![/|/ ])>#iU', $html, $result);
  $opentags = $result[1];
  // put all closed tags into an array
  preg_match_all('#</([a-z]+)>#iU', $html, $result);
  $closetags = $result[1];
  $len_opened = count($opentags);
  // if all tags are closed, we can return
  if (count($closetags) == $len_opened) {
   return $html;
  }
  // close tags in reverse order that they were opened
  $opentags = array_reverse($opentags);
  // self closing tags
  $sc = array('br','input','img','hr','meta','link');
  // ,'frame','iframe','param','area','base','basefont','col'
  // should not skip tags that can have content inside!
  for ($i=0; $i < $len_opened; $i++)
  {
   $ot = strtolower($opentags[$i]);
   if (!in_array($opentags[$i], $closetags) && !in_array($ot,$sc))
   {
    $html .= '</'.$opentags[$i].'>';
   }
   else
   {
    unset($closetags[array_search($opentags[$i], $closetags)]);
   }
  }
  return $html;
}

测试使用的结果:

<?php
$content = '<div><p><span>越发忙碌的你,是否想给自己放个假?专注工作的你,是否还记得上一次锻炼是什么时候?优伴户外旅行,给你不一样的旅行体验:给心自由,便处处都是风景!';
echo CloseTags($content);
/*
返回的结果是:
<div><p><span>
越发忙碌的你,是否想给自己放个假?专注工作的你,是否还记得上一次锻炼是什么时候?优伴户外旅行,给你不一样的旅行体验:给心自由,便处处都是风景!</span></p></div>
*/
?>

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
PHP实现的功能是显示8条基色色带
Oct 09 PHP
PHP+FLASH实现上传文件进度条相关文件 下载
Jul 21 PHP
php下连接mssql2005的代码
Jan 17 PHP
php设计模式 Decorator(装饰模式)
Jun 26 PHP
thinkphp中ajax与php响应过程详解
Dec 08 PHP
浅谈php自定义错误日志
Feb 13 PHP
PHP实现连接设备、通讯和发送命令的方法
Oct 13 PHP
详解WordPress开发中wp_title()函数的用法
Jan 07 PHP
通过php动态传数据到highcharts
Apr 05 PHP
PHP微信模板消息操作示例
Jun 29 PHP
PHP生成随机字符串实例代码(字母+数字)
Sep 11 PHP
Laravel框架数据库迁移操作实例详解
Apr 06 PHP
Zend Framework实现留言本分页功能(附demo源码下载)
Mar 22 #PHP
Zend Framework实现具有基本功能的留言本(附demo源码下载)
Mar 22 #PHP
Zend Framework实现将session存储在memcache中的方法
Mar 22 #PHP
Zend Framework分页类用法详解
Mar 22 #PHP
Zend Framework生成验证码并实现验证码验证功能(附demo源码下载)
Mar 22 #PHP
PHP的Laravel框架中使用AdminLTE模板来编写网站后台界面
Mar 21 #PHP
深入解析PHP的Laravel框架中的event事件操作
Mar 21 #PHP
You might like
PHP脚本数据库功能详解(中)
2006/10/09 PHP
用php或asp创建网页桌面快捷方式的代码
2010/03/23 PHP
php实现word转html的方法
2016/01/22 PHP
thinkPHP连接sqlite3数据库的实现方法(附Thinkphp代码生成器下载)
2016/05/27 PHP
Yii2实现增删改查后留在当前页的方法详解
2017/01/13 PHP
JavaScript isPrototypeOf和hasOwnProperty使用区别
2010/03/04 Javascript
一个关于jqGrid使用的小例子(行按钮)
2011/11/04 Javascript
jquery购物车实时结算特效实现思路
2013/09/23 Javascript
JS仿百度搜索自动提示框匹配查询功能
2013/11/21 Javascript
jquery获取对象的方法足以应付常见的各种类型的对象
2014/05/14 Javascript
jQuery子窗体取得父窗体元素的方法
2015/05/11 Javascript
JS中多步骤多分步的StepJump组件实例详解
2016/04/01 Javascript
JSONP原理及简单实现
2016/06/08 Javascript
微信小程序 Flex布局详解
2016/10/09 Javascript
基于Bootstrap漂亮简洁的CSS3价格表(附源码下载)
2017/02/28 Javascript
javascript编程实现栈的方法详解【经典数据结构】
2017/04/11 Javascript
原JS实现banner图的常用功能
2017/06/12 Javascript
BootStrap Table前台和后台分页对JSON格式的要求
2017/06/28 Javascript
javascript对HTML字符转义与反转义
2018/12/13 Javascript
vue组件开发之tab切换组件使用详解
2020/08/21 Javascript
Python实现提取谷歌音乐搜索结果的方法
2015/07/10 Python
Python简单连接MongoDB数据库的方法
2016/03/15 Python
使用11行Python代码盗取了室友的U盘内容
2018/10/23 Python
程序员写Python时的5个坏习惯,你有几条?
2018/11/26 Python
python处理自动化任务之同时批量修改word里面的内容的方法
2019/08/23 Python
使用Matplotlib绘制不同颜色的带箭头的线实例
2020/04/17 Python
Python基于execjs运行js过程解析
2020/11/27 Python
html5+CSS3+JS实现七夕言情功能代码
2017/08/28 HTML / CSS
俄罗斯达美乐比萨外送服务:Domino’s Pizza
2020/12/18 全球购物
医生自荐信
2013/10/11 职场文书
2014年中班元旦活动方案
2014/02/14 职场文书
企业安全生产责任书范本
2014/07/28 职场文书
2015年教师学期工作总结
2015/04/30 职场文书
导游词之泉州崇武古城
2019/12/20 职场文书
USB TYPE-C 或将成为所有智能手机充电标准
2022/04/21 数码科技
如何用H5实现好玩的2048小游戏
2022/07/23 HTML / CSS