我想通过一个标记分割一个HTML字符串,以创建一个博客预览而不显示完整的帖子。这比我第一次想到的更难。下面是问题:拼图:正确地分割一个HTML字符串
- 用户将通过所见即所得编辑器(CKEditor)创建HTML 。 标记不保证为 漂亮或一致。
- 令牌
read_more()
可以将 放置在字符串 的任何位置,包括嵌套在 段落标记内。 - 由此产生的第一个拆分字符串 需要对合理使用该标记的所有 有效。可能的用途
例子:
<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。正则表达式也许是另一种选择。你会用什么样的策略来解决这个问题,并尽可能地做到无懈可击?任何代码片段或提示也将不胜感激(我使用PHP)。
正则表达式是**不是**选项。看到这个答案另一个SO问题:http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 – You 2010-08-01 01:30:27
为什么你不能只使用修剪()生成的字符串,找到缺少的开放或关闭元素并追加适当的,使其有效的HTML? – 2010-08-01 01:32:30
@你如果正则表达式不是一个选项,请随意建议另一个可能无效(X)HTML的选项。据我所知,PHP没有XML解析器,它不会在无效XML上抛出错误,并且不是GPL许可的。 – VirtuosiMedia 2010-08-01 01:37:39