当前位置: 首页 > 编程笔记 >

PHP实现补齐关闭的HTML标签

申思远
2023-03-14
本文向大家介绍PHP实现补齐关闭的HTML标签,包括了PHP实现补齐关闭的HTML标签的使用技巧和注意事项,需要的朋友参考一下

本文实例讲述了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操作office文档技巧总结(包括word,excel,access,ppt)》、《php日期与时间用法总结》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

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

 类似资料:
  • 问题内容: 每当我们从数据库或类似来源获取一些用户输入的内容并进行一些编辑时,我们都可能会检索仅包含开始标记但没有结束标记的部分。 这可能会妨碍网站的当前布局。 有客户端或服务器端的方法可以解决此问题吗? 问题答案: 找到了一个很好的答案: 使用PHP 5并使用DOMDocument对象的loadHTML()方法。此自动解析格式错误的HTML,随后对saveXML()的调用将输出有效的HTML。D

  • 问题内容: 我想知道为什么HTML 标记没有像其他HTML标记那样获得结束标记,如果我们关闭输入标记会出现什么问题呢? 我尝试使用Google,但发现写这样的输入标签的标准没有用来 关闭它。 当我使用以下命令为按钮创建输入标签时,我个人感觉到了问题 尽管创建了单选按钮,但我将附加到单选按钮 不起作用。它只是显示单选按钮,在这种情况下不显示。虽然我可以看到完整的代码: 有人可以解释吗? PS :我遇

  • 本文向大家介绍PHP实现过滤各种HTML标签,包括了PHP实现过滤各种HTML标签的使用技巧和注意事项,需要的朋友参考一下 首先分享一些比较常见的 更简单些的写法: 再来一个: 以上三种方法均可以实现,不过各有优劣,小伙伴们根据自己的项目需求来选择吧。

  • 我在使用wordpress时遇到问题。我正在在线编辑wordpress页面并在其中使用数组,所以当我在页面上写这篇文章时, 结果,页面显示的是我想要的, “产品”、“库存”= 邮递($product)? 请帮助我了解发生了什么,以及如何解决它。至少我知道在这部分代码中, 第一个

  • 问题内容: 按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 我目前正在使用以下IDE。他们达到了目的,但我想知道是否有更好的选择可以切换。 phpDesigner v6.2.5(对于PHP)Navicat 8.0.29(

  • 我想实现一个hashmap,但是当我测试时,直接运行和调试运行的结果不一致 下面是我的代码 这是我的直接运行时的结果 当我在没有断点的情况下调试和运行时,结果同上。但当我踏过它,结果如下 谁能告诉我为什么???