提问者:小点点

ruby从db中的内容字段获取图像标记


在我的应用程序中,我有文章模型,我有内容字段,其中存储了我所有的新闻文章html数据,如图像视频等。。。

但是现在我需要格式化rss feed,我必须获取所有这些img标记,并将它们放置到其他xml分支。

例如内容:

<h1>asdasd</h1>
content...
<img ... />

现在我的rss Builder视图是这样的:

xml.instruct! :xml, :version => "1.0"#, :encoding => "windows-1251" 
xml.rss :version => "2.0" do
xml.channel do
for article in @posts
      xml.item do
        xml.title article.title
xml.description article.intro_text
end
end
end

也许用一些像gsub,regex?或者怎样做更好?请给我一个建议。非常感谢。


共1个答案

匿名用户

您可以使用String#scan方法,该方法返回与提供的正则表达式模式匹配的字符串数组。你只需要拿出一个模式来匹配你想要拉出的图像标签。

a = "cruel world"
a.scan(/\w+/)        #=> ["cruel", "world"]
a.scan(/.../)        #=> ["cru", "el ", "wor"]
a.scan(/(...)/)      #=> [["cru"], ["el "], ["wor"]]
a.scan(/(..)(..)/)   #=> [["cr", "ue"], ["l ", "wo"]]

为了匹配img标记,您可以尝试我从另一个SO答案复制的模式。

<img\s[^>]*?src\s*=\s*['\"]([^'\"]*?)['\"][^>]*?>

这种模式似乎是根据红细胞测试来工作的。