【发布时间】:2011-03-23 18:21:24
【问题描述】:
我正在尝试通过标记拆分 HTML 字符串,以便在不显示完整帖子的情况下创建博客预览。这比我最初想象的要困难。以下是问题:
- 用户将创建 HTML 通过所见即所得的编辑器(CKEditor)。 不保证标记是 漂亮或一致。
- 令牌
read_more()可以 放置在字符串的任何位置, 包括嵌套在一个 段落标签。 - 生成的第一个拆分字符串 需要对所有人都是有效的 HTML 令牌的合理使用。
可能的用途示例:
<p>Some text here. read_more()</p>
<p>Some text read more() here.</p>
<p>read_more()</p>
<p> read_more()</p>
read_more()
到目前为止,我已经尝试在令牌上拆分字符串,但它留下了无效的 HTML。正则表达式也许是另一种选择。您将使用什么策略来解决这个问题并使其尽可能防弹?任何代码 sn-ps 或提示也将不胜感激(我正在使用 PHP)。
【问题讨论】:
-
正则表达式不是选项。请参阅另一个 SO 问题的答案:stackoverflow.com/questions/1732348/…
-
为什么你不能只在结果字符串上使用 trim(),找到丢失的打开或关闭元素并适当地附加,使其成为有效的 HTML?
-
@You 如果 regex 不是一个选项,请随意提出另一个适用于潜在无效 (X)HTML 的选项。据我所知,PHP 没有一个不会在无效 XML 上引发错误的 XML 解析器,也没有 GPL 许可。
-
@James Black - 这可能是一种选择,但找到丢失的结束标签的最佳方法是什么?
-
DOMDocument::loadHTML()呢?
标签: php regex string html-parsing