2012-04-14 59 views
0

文字列があります。その文字列はHTMLコードであり、私が作成しているブログ投稿のティーザーとして機能します。 HTMLコード(ティーザー)全体がデータベースのフィールドに格納されます。文字列からの抽出 - Ruby

私の目標:ユーザー(ソーシャルボタンのようなフェイスブック)が特定のブログ記事を好きなとき、正しいデータがニュースフィードに表示されるようにしたいと思います。そのためには、画像の最初の出現でティーザーから画像パスsrc="i-m-a-g-e--p-a-t-h"を抽出する必要があります。私はユーザーがティーザーに1つのイメージしか置くことはできませんでしたが、誤って2つ以上のイメージを置くと、すべてが痛くなります。 さらに、説明フィールドでは、<p>タグ内の最初のオカレンス内のテキストを抽出する必要があります。問題は、ユーザーが最初のタグの内側に画像を置くこともできることです。

専門家がこの問題を解決するのを手伝ってもらえると大変感謝します。 SRCを抽出するための正規表現と

テキスト文字列は、ここで見つけることができます:http://rubular.com/r/gajzivoBSf

感謝を!

+0

だから、どうすればそのウェブサイトを使用しますか? 「送信」ボタンはどこですか? – Ryan

答えて

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スクリプトに入れたら、ノコギリとは別の問題があります。メッセージは次のようになります。 "初期化されていない定数Refinery :: Blog :: Post :: Nokogiri"これの原因を知っていますか?それを解決する方法。 Googleがこの問題に関して助けてくれませんでした – Dantes

+0

@Dantes正しい場所に 'require 'nokogiri'を追加していないようです。 – Phrogz

+0

モデルの上にあるGemfile(post.rb)、モデルで作成したメソッドの内側、ビューの内側など、どこにでも追加しようとしました... - この関数はありません。 「正しい場所」がどこにあるのか教えていただけますか? – Dantes

関連する問題