2011-03-29 98 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