2012-04-14 80 views
0

我有一個字符串。該字符串是一個html代碼,它可以作爲我創建的博客文章的傳情。整個html代碼(teaser)存儲在數據庫的一個字段中。從字符串中提取 - 紅寶石

我的目標是:當用戶(Facebook的社交按鈕)喜歡某個博客帖子時,他的新聞提要中會顯示正確的數據。爲了做到這一點,我需要在第一次出現圖像時從傳情中提取src="i-m-a-g-e--p-a-t-h"中的圖像路徑。當用戶只在預告片中放置一個圖像時,我成功了,但是如果他不小心放置了兩個或更多圖像,整個事情就會發生。 此外,對於描述字段,我需要在<p>標記內第一次出現內提取文本。問題在於用戶可以在第一個標籤中放置圖像。

如果一位專家能幫我解決這個問題,幾天來一直困擾着我,我將非常感激。

與提取SRC正則表達式文本字符串可以在這裏找到:http://rubular.com/r/gajzivoBSf

謝謝!

+0

那麼,嗯......你如何使用該網站? 「提交」按鈕在哪裏? – Ryan 2012-04-14 23:25:58

回答

2

不要試圖自己解析HTML。讓專業人士來做。

require 'nokogiri' 
frag = Nokogiri::HTML.fragment(your_html_string) 
first_img_src = frag.at_css('img')['src'] 
first_p_text = frag.at_css('p').text 
+0

Phrogz,謝謝,這非常有幫助,而且它在我的導軌控制檯中都很棒。但是,當我把我的代碼放在.html.erb腳本中時,我經常會遇到與Nokogiri不同的問題,並且我得到如下消息:「未初始化的常量精煉廠:: Blog :: Post :: Nokogiri」你知道這個原因嗎?如何解決它。谷歌在這件事上沒有幫助 – Dantes 2012-04-20 10:30:34

+0

@Dantes聽起來好像你沒有在正確的位置添加'require'nokogiri'。 – Phrogz 2012-04-20 12:47:19

+0

我試圖將它添加到任何地方 - 在Gemfile中,在模型的頂部(post.rb),在模型中創建的方法內部,在視圖內... - 這些函數都不是。你能告訴我哪裏是'正確的地方'嗎? – Dantes 2012-04-20 14:37:48