2014-02-25 200 views
0

好吧,就像聽起來那麼簡單,我還是不知道該怎麼做(並想象我甚至決定改變語言)。刪除HTML標記+內容

所以,我已經得到了無論是簡單的文本或包含一些標記文本(:有些人可能不被視爲有效 html標籤,例如<ref>),我要刪除所有標籤和它們的內容。

嘗試與Nokogiri的.search("//text()").text但它仍然遠離我的需要。

想法?


P.S.我正在尋找一個防彈,100%的工作解決方案,因此正則表達式是相當出了問題......


樣品輸入/輸出

One <!-- Two -->Three 

應該返回One Three

This is <a href='#'>some Text</a> 

應該返回This is

Even more <ref name='tag'>reference</ref><br>text 

應該返回Even more text

+0

你能否提供一些樣本輸入/輸出。 –

+0

@JustinWood看看我更新的問題。 –

+0

@ Dr.Kameleon正則表達式將解決這個問題,嘗試Nokogiri好像是一種矯枉過正,我會張貼我的正則表達式答案 – bjhaid

回答

1

如果你想引入nokogiri要做到這一點,你必須使用DocumentFragment類,因爲文本不是有效的HTML或XML文檔。

doc = Nokogiri::HTML::DocumentFragment.parse(text) 

puts doc.xpath("text()") 

這會給你指定的輸出。

+0

呃...太棒了。正是我需要的!多謝了朋友! :-) –

0

引入nokogiri似乎是手頭的問題矯枉過正,我會使用一個正則表達式來它解決如下

input = "One <!-- Two -->Three" 
input.gsub(/(\<.+\>)/) 
#=> "One Three" 

input = "This is <a href='#'>some Text</a>" 
input.gsub(/(\<.+\>)/, "") 
#=> "This is " 

input = "Even more <ref name='tag'>reference</ref><br>text" 
input.gsub(/(\<.+\>)/, "") 
#=> "Even more text" 

論證rubular