Comment intégrer des vidéos YouTube en PHP?

est-ce que quelqu'un peut me donner une idée comment pouvons-nous afficher ou intégrer une vidéo YouTube si nous avons juste L'URL ou le code D'intégration?

57
demandé sur Salman A 2009-01-05 10:12:32

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>
84
répondu Alec Smart 2009-01-05 07:30:25

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:

51
répondu Salman A 2014-12-13 17:06:02

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

16
répondu fanky 2011-09-29 22:36:16

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:

une partie de cette réponse est référée par la réponse de @shawn dans cette question .

9
répondu KAD 2017-05-23 12:02:48

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=

7
répondu hasen 2009-01-08 10:42:19

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);
 }

?>

`

5
répondu Ross 2011-12-11 02:09:00

si vous souhaitez télécharger des vidéos de manière programmée, cochez la case API données YouTube pour PHP

3
répondu CMS 2009-01-05 07:18:48

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

2
répondu OscarRyz 2009-08-14 22:28:39

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"/>
2
répondu user2589739 2015-03-10 04:17:35

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.

1
répondu Mayank Vadiya 2015-11-23 07:32:48

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.

0
répondu Akshay 2009-01-05 07:40:24

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"/>
0
répondu Ryan Shih 2012-09-02 22:50:45