在Ruby中提取IMG标记

eri*_*lli 5 ruby ruby-on-rails ruby-on-rails-3

是否可以从Ruby中的HTML块中提取IMG标记(或只是IMG标记的src属性)?

例如,如果我有一个HTML块,例如:

<p>Lorem ipsum dolor sit amet, labore et dolore magna aliqua.<img src="example.jpg" alt="" /> Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.</p>
Run Code Online (Sandbox Code Playgroud)

我可以通过Regex或其他方法提取IMG标签或该IMG标签的src吗?

在此先感谢您的任何建议!

Phr*_*ogz 31

使用Nokogiri:

require 'nokogiri' # gem install nokogiri
doc = Nokogiri::HTML( my_html_string )
img_srcs = doc.css('img').map{ |i| i['src'] } # Array of strings
Run Code Online (Sandbox Code Playgroud)


Jho*_*ung 7

您可以使用此正则表达式

html_str[/img.*?src="(.*?)"/i,1]
Run Code Online (Sandbox Code Playgroud)

如果你想要一个更高级的HTML解析器,我推荐nokogiri

  • 这不适用于单引号属性值,大写标记名称,标记和属性之间的其他属性(如`id`或`alt`),标记和属性之间的额外空间.它也只找到第一个img的src,而不是全部.虽然基于正则表达式的解决方案可以做得更好,正如这里的大多数其他答案所示,您通常应该将XML和HTML解析留给XML和HTML解析器. (2认同)