修复未封闭的 HTML 标签
我正在设计一些博客布局,我需要创建每篇文章的摘要(比如最新的 15 篇文章)以显示在主页上。现在我使用的内容已经由纺织库格式化为 html 标签。现在,如果我使用 substr 获取帖子的前 500 个字符,我面临的主要问题是如何关闭未关闭的标签。
例如
<div>.......................</div>
<div>...........
<p>............</p>
<p>...........| 500 chars
</p>
<div>
我得到的是两个未闭合的标签
和
, p 不会造成太多麻烦,但 div 只会扰乱整个页面布局。那么有什么建议如何跟踪开始标签并手动关闭它们或其他什么吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
正如 ajreal 所说,DOMDocument 是一个解决方案。
示例:
优点: 原生包含在 PHP 中,与 PHP Tidy 相反。
As ajreal said, DOMDocument is a solution.
Example :
Advantage : natively included in PHP, contrary to PHP Tidy.
有很多方法可以使用:
There are lots of methods that can be used:
您可以使用 DOMDocument 来执行此操作,但要注意字符串编码问题。此外,您还必须使用完整的 HTML 文档,然后提取所需的组件。下面是一个示例:
输出:
如果您使用 WordPress,则应将
substr()
调用包装在对wpautop
的调用中 -wpautop(substr(...) )
。您可能还希望测试传递给函数的 $rawHtml 的长度,如果不够长,则跳过附加“更多”链接。You can use DOMDocument to do it, but be careful of string encoding issues. Also, you'll have to use a complete HTML document, then extract the components you want. Here's an example:
Outputs:
If you are using WordPress you should wrap the
substr()
invocation in a call towpautop
-wpautop(substr(...))
. You may also wish to test the length of the $rawHtml passed to the function, and skip appending the "More" link if it isn't long enough.我找到了一个使用 DOMDocument 但不会向字符串添加额外标签的解决方案;只是修复格式错误的 HTML。请参阅此处的答案:https://stackoverflow.com/a/79081559/492132
原始github(不是我的):< a href="https://gist.github.com/hubgit/1322324" rel="nofollow noreferrer">https://gist.github.com/hubgit/1322324
I found a solution which uses DOMDocument but does not add extra tags to your strings; just fixes malformed HTML. See answer here: https://stackoverflow.com/a/79081559/492132
Original github (not mine) here: https://gist.github.com/hubgit/1322324