Avd*_*ept 2 ruby regex youtube ruby-on-rails
我有这样的html
<iframe width="560" height="315" src="http://www.youtube.com/embed/Wa6CA3YqV2Q" frameborder="0" allowfullscreen></iframe>
Run Code Online (Sandbox Code Playgroud)
如何Wa6CA3YqV2Q使用正则表达式获取视频 ID ?还有其他方法可以实现这一目标吗?
UPD:我使用过 Nokogiri,我设法获得http://www.youtube.com/embed/Wa6CA3YqV2Q了具有此链接的视频的 id,那么我如何获得 id?
小智 5
下面的代码将采用任何 vimeo 或 youtube URL 并返回视频 ID 和提供者。
在你的模型中
def parse_video_url(url)
@url = url
youtube_formats = [
%r(https?://youtu\.be/(.+)),
%r(https?://www\.youtube\.com/watch\?v=(.*?)(&|#|$)),
%r(https?://www\.youtube\.com/embed/(.*?)(\?|$)),
%r(https?://www\.youtube\.com/v/(.*?)(#|\?|$)),
%r(https?://www\.youtube\.com/user/.*?#\w/\w/\w/\w/(.+)\b)
]
vimeo_formats = [%r(https?://vimeo.com\/(\d+)), %r(https?:\/\/(www\.)?vimeo.com\/(\d+))]
@url.strip!
if @url.include? "youtu"
youtube_formats.find { |format| @url =~ format } and $1
@results = {provider: "youtube", id: $1}
@results
elsif @url.include? "vimeo"
vimeo_formats.find { |format| @url =~ format } and $1
@results = {provider: "vimeo", id: $1}
@results
else
return nil # There should probably be some error message here
end
end
Run Code Online (Sandbox Code Playgroud)
然后在您的控制器中调用:
@results = @course.parse_video_url(@course.video_url)
# Access the hash with @results[:provider] or @results [:id]
Run Code Online (Sandbox Code Playgroud)
在您看来,您可以编写 IF 语句来显示 provider/id 组合的相关嵌入代码。
| 归档时间: |
|
| 查看次数: |
1969 次 |
| 最近记录: |