簡體   English   中英

如何從Rails中的ruby中的meta標簽中獲取內容價值?

[英]How to get content value out of meta tag in ruby on rails?

我的視圖HTML中有此meta標簽列表(頁面加載后)。 標簽是動態生成的,

@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標記中獲取內容的價值。

給定一個@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返回與給定CSS選擇器匹配的第一個元素,而[]返回給定屬性的值。

如何使用簡單的正則表達式使用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"]]

說明:

上面的代碼將使用name="r_end"捕獲content的值

如果您認為可能還有其他name="r_end" HTML元素,則可能需要在正則表達式中添加其他標識符

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM