我試圖分析其中包含iframe的字符串,將其src
屬性轉換爲特殊格式的Ruby變量,然後將字符串中的iframe替換爲Ruby變量以特定的方式格式化。到目前爲止,我已經寫到:紅寶石:剝離iframe並將其src轉換爲var
def video_parse(string)
if string.include?('youtube.com/?v=')
url = 'youtube.com/?v='
string.gsub!('<iframe>.*</iframe>', video_service('YOUTUBE', vid(string, url)))
end
if string.include?('player.vimeo.com/video/')
url = 'player.vimeo.com/video/'
string.gsub!('<iframe>.*</iframe>', video_service('VIMEO', vid(string, url)))
end
string
end
def vid(string, url)
string.split(url).last.split(/['"]/).first
end
def video_service(service, vid)
"*|#{service}:[$vid=#{vid}]|*"
end
但它並不代替任何東西。我懷疑我的通配符iframe標籤選擇是錯誤的,加上我的vid
方法有點笨重。如何讓我的通配符gsub
正常工作?對於獎勵積分,我可以更有效地寫一點,所以我不解析string
來重新格式化iframe中的src
?
更新
字符串看起來是這樣的:
string = 'resources rather than creating our luck through innovation.\n<br>\n<br> \n<iframe allowfullscreen=\"\" frameborder=\"0\" height=\"311\" mozallowfullscreen=\"\" name=\"vimeo\" src=\"http://player.vimeo.com/video/222234444\" webkitallowfullscreen=\"\" width=\"550\"></iframe>\n<br>\n<br>\nThat hasn’t stoppe'
第二次嘗試看起來是這樣,仍然不能取代任何東西:
def mailchimp_video_parse(string)
if string.include?('youtube.com/?v=')
string.gsub!(iframe) { video_service('YOUTUBE', vid(Regexp.last_match[1])) }
end
if string.include?('player.vimeo.com/video/')
string.gsub!(iframe) { video_service('VIMEO', vid(Regexp.last_match[1])) }
end
string
end
def vid(iframe)
iframe.split!('src').last.split!(/"/).first
end
def iframe
'<iframe.*<\/iframe>'
end
def video_service(service, vid)
"*|#{service}:[$vid=#{vid}]|*"
end
仍然一無所獲。
你能舉一個'string'可能的例子嗎 – Sid
問題已經更新。 –