Comment intégrer des vidéos YouTube en PHP?
13 réponses
vous devez demander aux utilisateurs de stocker le code de 11 caractères de la vidéo youtube.
pour p.ex. http://www.youtube.com/watch?v=Ahg6qcgoay4
le code de onze caractères est: Ahg6qcgoay4
vous prenez alors ce code et le placez dans votre base de données. Ensuite, partout où vous voulez placer la vidéo youtube dans votre page, chargez le caractère de la base de données et mettez le code suivant: -
p.ex. pour Ahg6qcgoay4 il sera :
<object width="425" height="350" data="http://www.youtube.com/v/Ahg6qcgoay4" type="application/x-shockwave-flash"><param name="src" value="http://www.youtube.com/v/Ahg6qcgoay4" /></object>
Ne stockez pas le code d'intégration dans votre base de données -- YouTube peut changer le code d'intégration et les paramètres D'URL de temps en temps. Par exemple, le code d'intégration <object>
a été retiré en faveur du code d'intégration <iframe>
. Vous devez analyser l'id de la vidéo à partir du code URL/embed (en utilisant des expressions régulières, des fonctions D'analyse D'URL ou un analyseur HTML) et le stocker. Puis l'afficher en utilisant n'importe quel mécanisme actuellement offert par L'API YouTube.
un exemple PHP naïf pour l'extraction de l'id de la vidéo se fait comme suit:
<?php
preg_match(
'/[\?\&]v=([^\?\&]+)/',
'http://www.youtube.com/watch?v=OzHvVoUGTOM&feature=channel',
$matches
);
// $matches[1] should contain the youtube id
?>
je vous suggère de regarder ces articles pour savoir ce qu'il faut faire avec ces ids:
pour créer votre propre lecteur vidéo YouTube:
de longues et courtes urls youtube vous pouvez obtenir l'embed de cette façon:
$ytarray=explode("/", $videolink);
$ytendstring=end($ytarray);
$ytendarray=explode("?v=", $ytendstring);
$ytendstring=end($ytendarray);
$ytendarray=explode("&", $ytendstring);
$ytcode=$ytendarray[0];
echo "<iframe width=\"420\" height=\"315\" src=\"http://www.youtube.com/embed/$ytcode\" frameborder=\"0\" allowfullscreen></iframe>";
Espère que cela aide quelqu'un
les balises <object>
et <embed>
sont dépréciées selon HTML Youtube Videos , il est préférable d'utiliser la balise <iframe>
pour ce faire.
<iframe width="420" height="315"
src="http://www.youtube.com/embed/XGSy3_Czz8k?autoplay=1">
</iframe>
afin que vos utilisateurs ne passent pas leur vie entière à essayer de trouver l'id de la vidéo dans les liens pour le mettre dans votre champ de formulaire, laissez-les afficher le lien de la vidéo qu'ils trouvent sur youtube et vous pouvez utiliser le regex suivant pour obtenir l'id de la vidéo:
preg_match("/^(?:http(?:s)?:\/\/)?
(?:www\.)?(?:m\.)?(?:youtu\.be\/|youtube\.com\/(?:(?:watch)?\?(?:.*&)?v(?:i)?=|
(?:embed|v|vi|user)\/))([^\?&\"'>]+)/", $url, $matches);
pour obtenir l'id de la vidéo vous pouvez le récupérer $matches[1]
, ceux-ci correspondront:
- youtube.com/v/vidid
- youtube.com/vi/vidid
- youtube.com/?v=vidid
- youtube.com/?vi=vidid
- youtube.com/watch?v=vidid
- youtube.com/watch?vi=vidid
- youtu.be / vidid
- youtube.com/embed/vidid
- http://youtube.com/v/vidid
- http://www.youtube.com/v/vidid
- https://www.youtube.com/v/vidid
- youtube.com/watch?v=vidid&wtv=wtv
- http://www.youtube.com/watch?dev=inprogress&v=vidid&feature=related
- https://m.youtube.com/watch?v=vidid
une partie de cette réponse est référée par la réponse de @shawn dans cette question .
utilisez un regex pour extraire le "video id" après watch?v=
stocke l'id de la vidéo dans une variable, appelons cette variable vid
récupérez le code d'intégration d'une vidéo aléatoire, supprimez l'id de vidéo du code d'intégration et remplacez-le par le vid
que vous avez.
Je ne sais pas comment gérer regex en php, mais ça ne devrait pas être trop dur
voici un exemple de code en python:
>>> ytlink = 'http://www.youtube.com/watch?v=7-dXUEbBz70'
>>> import re
>>> vid = re.findall( r'v\=([\-\w]+)', ytlink )[0]
>>> vid
'7-dXUEbBz70'
>>> print '''<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/%s&hl=en&fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/%s&hl=en&fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object>''' % (vid,vid)
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/7-dXUEbBz70&hl=en&fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/7-dXUEbBz70&hl=en&fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object>
>>>
l'expression régulière v\=([\-\w]+)
capture une (sous -) chaîne de caractères et de tirets qui vient après v=
voici un code que j'ai écrit pour transformer automatiquement les URLs en liens et intégrer automatiquement toutes les urls vidéo de youtube. Je l'ai fait pour un salon de discussion sur lequel je travaille et ça marche plutôt bien. Je suis sûr qu'il fonctionnera très bien pour tout autre but ainsi que comme un blog par exemple.
Tout ce que vous avez à faire est d'appeler la fonction" autolink () " et de lui passer la chaîne à analyser.
par exemple, incluez la fonction ci-dessous et faites écho à ce code.
`
echo '<div id="chat_message">'.autolink($string).'</div>';
/****************Function to include****************/
<?php
function autolink($string){
// force http: on www.
$string = str_ireplace( "www.", "http://www.", $string );
// eliminate duplicates after force
$string = str_ireplace( "http://http://www.", "http://www.", $string );
$string = str_ireplace( "https://http://www.", "https://www.", $string );
// The Regular Expression filter
$reg_exUrl = "/(http|https|ftp|ftps)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?/";
// Check if there is a url in the text
$m = preg_match_all($reg_exUrl, $string, $match);
if ($m) {
$links=$match[0];
for ($j=0;$j<$m;$j++) {
if(substr($links[$j], 0, 18) == 'http://www.youtube'){
$string=str_replace($links[$j],'<a href="'.$links[$j].'" rel="nofollow" target="_blank">'.$links[$j].'</a>',$string).'<br /><iframe title="YouTube video player" class="youtube-player" type="text/html" width="320" height="185" src="http://www.youtube.com/embed/'.substr($links[$j], -11).'" frameborder="0" allowFullScreen></iframe><br />';
}else{
$string=str_replace($links[$j],'<a href="'.$links[$j].'" rel="nofollow" target="_blank">'.$links[$j].'</a>',$string);
}
}
}
return ($string);
}
?>
`
si vous souhaitez télécharger des vidéos de manière programmée, cochez la case API données YouTube pour PHP
en cherchant ce même sujet j'ai trouvé une autre méthode utilisant Javascript une API Youtube
directement de: http://code.google.com/apis/ajax/playground/#simple_embed
chargement de L'API
<script src="http://www.google.com/jsapi" type="text/javascript"></script>
et l'exécution du code javascript suivant:
google.load("swfobject", "2.1");
function _run() {
var videoID = "ylLzyHk54Z0"
var params = { allowScriptAccess: "always" };
var atts = { id: "ytPlayer" };
// All of the magic handled by SWFObject (http://code.google.com/p/swfobject/)
swfobject.embedSWF("http://www.youtube.com/v/" + videoID + "&enablejsapi=1&playerapiid=player1",
"videoDiv", "480", "295", "8", null, null, params, atts);
}
google.setOnLoadCallback(_run);
l'échantillon complet se trouve dans la page précédente http://code.google.com/apis/ajax/playground
vous pouvez faire ça simplement avec Joomla. Laissez - moi supposer un exemple D'URL YouTube - https://www.youtube.com/watch?v=ndmXkyohT1M
<?php
$youtubeUrl = JUri::getInstance('https://www.youtube.com/watch?v=ndmXkyohT1M');
$videoId = $youtubeUrl->getVar('v'); ?>
<iframe id="ytplayer" type="text/html" width="640" height="390" src="http://www.youtube.com/embed/<?php echo $videoId; ?>" frameborder="0"/>
vous pouvez simplement créer un formulaire d'entrée php pour Varchar date
, lui donner une longueur de varchar
de disons 300. Demandez ensuite aux utilisateurs de copier et coller le code D'intégration.Lorsque vous visionnerez les enregistrements, vous visionnerez la vidéo diffusée en continu.
luvboy,
si je comprends bien, l'utilisateur fournit L'URL/code de la vidéo Youtube et puis cette vidéo est affichée sur la page.
pour cela, il suffit d'écrire une page simple, avec mise en page etc.. Copiez le code d'intégration vidéo de youtube et collez-le dans votre page. Remplacer le code d'intégration par un certain champ, disons VideoID. Réglez ce VideoId sur le code fourni par votre utilisateur.
edit: voir réponse D'Alec Smart.
juste une petite mise à jour de la réponse D'Alec Smart: AS2 étant déprécié maintenant, le '?la version=3' est nécessaire pour que son exemple fonctionne. Voir la référence Youtube à YouTube Embedded Players and Player Parameters sous "Selecting content to play" pour plus de détails.
en d'autres termes:
<object width="425" height="350" data="http://www.youtube.com/v/Ahg6qcgoay4?version=3" type="application/x-shockwave-flash"><param name="src" value="http://www.youtube.com/v/Ahg6qcgoay4?version=3" /></object>
apparemment, la référence Youtube ci-dessus fait ceci comme suit (l'embed intérieur probablement utilisé comme un repli pour les navigateurs qui ne supporte pas encore la balise objet):
<object width="640" height="390">
<param name="movie"
value="https://www.youtube.com/v/u1zgFlCw8Aw?version=3&autoplay=1"></param>
<param name="allowScriptAccess" value="always"></param>
<embed src="https://www.youtube.com/v/u1zgFlCw8Aw?version=3&autoplay=1"
type="application/x-shockwave-flash"
allowscriptaccess="always"
width="640" height="390"></embed>
</object>
ou à l'aide d'iframes (remplacer http://example.com avec le domaine de votre site):
<iframe id="ytplayer" type="text/html" width="640" height="390" src="http://www.youtube.com/embed/u1zgFlCw8Aw?autoplay=1&origin=http://example.com" frameborder="0"/>