Formater un lien youtube, dailymotion ou vimeo pour l'utiliser dans shadowbox

Soyez le premier à donner votre avis sur cette source.

Snippet vu 5 887 fois - Téléchargée 16 fois

Contenu du snippet

Ce code permet de formater l'adresse d'une vidéo de la barre d'adresse du navigateur afin de pouvoir l'utiliser dans ShadowBox.
On appelle la fonction format_url_vdo avec, en paramètre, l'url de la vidéo copié de la barre d'adresse du navigateur.
On récupère l'url formaté que l'on pourra utilisé dans ShadowBox.

La seconde fonction formate le lien à mettre sur la page web afin d'avoir la miniature qui fera "pop" la shadowBox. On passe en paramètre l'url formaté par la première fonction, un titre, le nom de la classe et/ou de l'id pour se permettre plus de souplesse dans les feuilles de style.

Source / Exemple :


Formatage du lien
function format_url_vdo($url) { //initialisation des variables $host = ''; $id = ''; $parse = ''; $parse2 = ''; $formated_url = ''; //On détermine où est hebergée la vidéo (youtube, dailymotion, vimeo) et on extrait les données nécessaires au formatage du lien shadowbox $parse = parse_url($url); switch ($parse['host']) { case 'youtu.be': $host = 'youtube'; $id = substr($parse['path'], 1); break; case 'www.youtube.com': $host = 'youtube'; $parse2 = parse_str($parse['query'], $data); $id = $data['v']; break; case 'vimeo.com': $host = 'vimeo'; $id = substr($parse['path'], 1); break; case 'www.dailymotion.com': $host = 'dailymotion'; $id = substr($parse['path'], 7); break; default: break; } //On formate le lien selon l'hébergeur switch ($host) { case 'youtube': $formated_url = 'http://www.youtube.com/v/' . $id . ';hl=en&fs=1&rel=0&autoplay=1'; break; case 'vimeo': $formated_url = 'http://player.vimeo.com/video/' . $id . '?title=0&byline=0&portrait=0'; break; case 'dailymotion': $formated_url = 'http://www.dailymotion.com/swf/' . $id; break; default: break; } return $formated_url; }
Lien ShadowBox
function lnkShadowbox($url, $title, $nompic, $class, $id) { if (strlen($class) > 0) { $class = ' class="' . $class . '" '; } if (strlen($id) > 0) { $id = ' id="' . $id . '" '; } $link = '<a ' . $class . $id . 'rel="shadowbox" title="' . $title . '" href="' . $url . '">'; $link .= '<img src="../storage/pics/' . $nompic . '" alt="' . $nompic . '" style="max-width: 66px; max-height: 61px;" />'; $link .= '</a>'; return $link; }

A voir également

Ajouter un commentaire

Commentaires

uaip
Messages postés
1466
Date d'inscription
mardi 20 février 2007
Statut
Membre
Dernière intervention
7 février 2011

cod57, 7 regexp pour parser un lien, c'est BEAUCOUP trop lourd. 1 regexp suffit (tu as des centaines de tutos là dessus).
Imagine un mec qui écrit 10 liens 10 appels à la fonction 70 regexp (en sachant qu'une regexp est recompilée à chaque fois), c'est bien trop gourmand.
cod57
Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
10
ex

<?php
echo '';
var_dump(get_meta_tags('http://www.youtube.com/watch?v=DLZpJqi3M0k'));
echo '

';

function meta($url){

$content = file_get_contents($url);

$pattern['title'] = '/<meta property="og:title" content="(.+?)"/smi';
$pattern['description'] = '/<meta property="og:description" content="(.+?)"/smi';
$pattern['video'] = '/<meta property="og:video" content="(.+?)"/smi';
$pattern['videoWidth'] = '/<meta property="og:video:width" content="(.+?)"/smi';
$pattern['videoHeight'] = '/<meta property="og:video:height" content="(.+?)"/smi';
$pattern['image'] = '/<meta property="og:image" content="(.+?)"/smi';
$pattern['site_name'] = '/<meta property="og:site_name" content="(.+?)"/smi';

$title = (preg_match($pattern['title'],$content,$match)) ? $match[1] : '';
$description = (preg_match($pattern['description'],$content,$match)) ? $match[1] : '';
$video = (preg_match($pattern['video'],$content,$match)) ? $match[1] : '';
$videoWidth = (preg_match($pattern['videoWidth'],$content,$match)) ? $match[1] : '';
$videoHeight = (preg_match($pattern['videoHeight'],$content,$match)) ? $match[1] : '';
$image = (preg_match($pattern['image'],$content,$match)) ? $match[1] : '';
$site_name = (preg_match($pattern['site_name'],$content,$match)) ? $match[1] : '';

return(array($title,$description,$video,$videoWidth,$videoHeight,$image,$site_name));

}

echo '';
var_dump(meta('http://www.youtube.com/watch?v=DLZpJqi3M0k'));
echo '

';

?>
cod57
Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
10
@camillagaiaschicherie

oui tu as raison ma méthode est pas bonne
on ne récupère pas tout avec get-meta-tags
$content = file_get_contents($url); c'est mieux

++
camillagaiaschicherie
Messages postés
58
Date d'inscription
vendredi 23 mai 2008
Statut
Membre
Dernière intervention
28 février 2012

COD57

http://php.net/manual/en/function.get-meta-tags.php

"Note:

Seules les balises méta avec un attribut name seront parsées. "
cod57
Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
10
bonjour

@camillagaiaschicherie
$content = file_get_contents($url);
il y a http://php.net/manual/en/function.get-meta-tags.php

++

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.