修复未关闭的HTML标记

sat*_*tin 10 html php dom

我正在制作一些博客布局,我需要在主页上创建每个帖子的摘要(比如说最新的15个).现在我使用的内容已经由纺织库以html标签格式化.现在,如果我使用substr获得帖子的前500个字符,我面临的主要问题是如何关闭未关闭的标签.

例如

<div>.......................</div>
<div>...........
     <p>............</p>
     <p>...........| 500 chars
     </p>
<div>  
Run Code Online (Sandbox Code Playgroud)

我得到的是两个未封闭的标签<p>和<div>,p不会造成太多麻烦,但div只是混淆了整个页面布局.那么任何建议如何跟踪开口标签并手动关闭它们或什么?

ajr*_*eal 16

有很多方法可以使用:

  1. 使用适当的HTML解析器,如DOMDocument
  2. 使用PHP Tidy修复未关闭的标记
  3. 有些人会建议使用HTML Purifier


Jer*_*rry 15

正如ajreal所说,DOMDocument是一个解决方案.

示例:

$str = "
<html>
 <head>
  <title>test</title>
 </head>
 <body>
  <p>error</i>
 </body>
</html>
";

$doc = new DOMDocument();
@$doc->loadHTML($str);
echo $doc->saveHTML();
Run Code Online (Sandbox Code Playgroud)

优点:本身包含在PHP中,与PHP Tidy相反.