Youtube链接到嵌入 - 代码中发生了什么?

时间:2016-09-02 19:12:53

标签: ruby-on-rails youtube helper

有人可以分辨出红宝石在这里做了什么吗?

我想了解代码,以便将来适应它。 我想做的其中一件事就是让它适应Vimeo,但我需要了解发生了什么,这样我才能学到更多。

module ApplicationHelper
    def youtube_embed(youtube_url)
    if youtube_url[/youtu\.be\/([^\?]*)/]
      youtube_id = $1
    else
      # Regex from # http://stackoverflow.com/questions/3452546/javascript-regex-how-to-get-youtube-video-id-from-url/4811367#4811367
      youtube_url[/^.*((v\/)|(embed\/)|(watch\?))\??v?=?([^\&\?]*).*/]
      youtube_id = $5
    end

    %Q{<iframe title="YouTube video player" src="https://www.youtube.com/embed/#{ youtube_id }?rel=0&enablejsapi=1" frameborder="0" allowfullscreen></iframe>}
  end
end

1 个答案:

答案 0 :(得分:0)

这段代码尝试从视频上的任何YouTube链接构建嵌入youtube播放器的代码。 这个if youtube_url[/youtu\.be\/([^\?]*)/]验证给定的网址是否有&#34; youtu.be /...."格式然后提取视频ID。 ($1包含评估正则表达式的结果(/.../之间的表达式)

如果字符串不是以&#39; youtu.be&#39;开头,则代码使用一些棘手的正则表达式(如果跟随链接到代码中的stackoverflow,则可以找到ypu的解释)然后从$5获取视频ID。

然后它返回一个字符串,该字符串是该视频的嵌入youtube播放器的html代码。它使用#{youtube_id}

在此字符串的末尾插入视频ID