如何从 rails 上 ruby 的元标记中获取内容值?
How to get content value out of meta tag in ruby on rails?
我的视图中有这个元标记列表 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"
我想获取 content
中的值 2019/01/10 09:59:59 +0900
,即 <meta content=\"2019/01/10 09:59:59 +0900\" name=\"r_end\">
。有没有办法从元标记中获取内容的值。
给定一个 @meta
变量,其中包含一些 HTML 片段作为字符串:
@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"
at_css
returns the first element matching the given CSS selector and []
returns 给定属性的值。
如何使用简单的正则表达式来捕获使用 String#scan
的值。
仅当元标记的名称不变时才有效
@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"]]
解释:
上面的代码将捕获带有元标记name="r_end"
的content
的值
如果您认为可能还有一些其他 HTML 元素带有 name="r_end"
,您可能需要在正则表达式中添加一些其他标识符
我的视图中有这个元标记列表 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"
我想获取 content
中的值 2019/01/10 09:59:59 +0900
,即 <meta content=\"2019/01/10 09:59:59 +0900\" name=\"r_end\">
。有没有办法从元标记中获取内容的值。
给定一个 @meta
变量,其中包含一些 HTML 片段作为字符串:
@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"
at_css
returns the first element matching the given CSS selector and []
returns 给定属性的值。
如何使用简单的正则表达式来捕获使用 String#scan
的值。
仅当元标记的名称不变时才有效
@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"]]
解释:
上面的代码将捕获带有元标记name="r_end"
content
的值
如果您认为可能还有一些其他 HTML 元素带有 name="r_end"
,您可能需要在正则表达式中添加一些其他标识符