2011-03-29 69 views
4

我使用Liquid templating engine显示总结一系列职位 - 此刻我有东西沿着这些路线:截断HTML液体

{% for page in site.posts %} 
    {{page.content | truncatewords: 100}} 
{% endfor %} 

该网页内容包含HTML,并使用truncatewords会导致无效HTML将被插入到输出中。我不想从内容中删除所有HTML(嵌入的视频和图像应该可见),理想情况下,我只需要添加适当的结束标记。

我可以看到,截断不会达到我预期的结果,所以我的问题是:如何截断我的HTML以便使用Liquid输出有效的标记?

更新

一个非常具体的问题是,我有一个使用色素标记的代码示例。现在,如果截断发生在代码示例的中间,它会打开几个标记,从而搞乱了页面的其余部分。我正在寻找一种方法来截断这些帖子而不删除所有代码示例 - 只是截断并关闭内容主体中的所有打开的标签。

回答

6

好的,所以在网络上无法找到很多方法之后,我使用Nokogiri和深度优先遍历解析的HTML节点树来制作自己的解决方案。

TruncateHTML是一个simple script,它允许在保留有效结构的同时截断HTML片段。

+0

这太棒了,正是我所需要的!感谢您的写作:) – 2013-03-11 00:22:17