Le code ci-dessous prendra n'importe quelle URL vimeo ou youtube et renverra l'identifiant vidéo et le fournisseur.
Dans votre modèle
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
Ensuite, dans votre contrôleur il suffit d'appeler:
@results = @course.parse_video_url(@course.video_url)
# Access the hash with @results[:provider] or @results [:id]
Et, selon vous, vous pouvez écrire une instruction IF pour afficher le code embed pertinent pour le fournisseur/id combo .
lire http://stackoverflow.com/questions/1773822/get-youtube-video-id-from-html-code-with-php?rq=1 et http://stackoverflow.com/questions/8041352/ extraire-et-remplacer-youtube-seulement-iframe-src? rq = 1 espérons que cela vous aidera. –