我在视图HTML中(页面加载后)具有此元标记列表。标签是动态生成的,
@meta = "\n <meta content=\content1\">\n <meta content=\content2\">\n <meta content='content2\">\n ....... <meta content=\"2019/01/10 09:59:59 +0900\" name=\"r_end\">\n \n"
我想获取2019/01/10 09:59:59 +0900
内部的值content
,即<meta content=\"2019/01/10 09:59:59 +0900\" name=\"r_end\">
。有没有一种方法可以从meta标记中获取内容的价值。
答案 0 :(得分:3)
给出一个包含一些HTML代码段作为字符串的@meta
变量:
@meta = <<-HTML
<meta name="foo" content="content1">
<meta name="bar" content="content2">
<meta content="2019/01/10 09:59:59 +0900" name="r_end">
HTML
您可以使用Nokogiri进行解析:
require 'nokogiri'
doc = Nokogiri::HTML::DocumentFragment.parse(@meta)
doc.at_css('meta[name="r_end"]')['content']
#=> "2019/01/10 09:59:59 +0900"
答案 1 :(得分:0)
如何使用简单的正则表达式使用String#scan
捕获值。
这仅在metatag名称不变的情况下有效
@meta = "\n <meta content=\content1\">\n <meta content=\content2\">\n <meta content='content2\">\n ....... <meta content=\"2019/01/10 09:59:59 +0900\" name=\"r_end\">\n \n"
@meta.scan(/content=\"(.*)\" name=\"r_end\"/)
#=> [["2019/01/10 09:59:59 +0900"]]
说明:
上面的代码将捕获带有元标记content
的{{1}}的值
如果您认为name="r_end"
中可能还有其他HTML元素,则可能需要在正则表达式中添加其他标识符