webentwicklung-frage-antwort-db.com.de

Wie binde ich YouTube-Videos in PHP ein?

Kann mir jemand eine Idee geben, wie wir zeigen oder ein YouTube-Video einbetten können, wenn wir nur die URL oder den Einbettungscode haben?

57

Sie müssen die Benutzer bitten, den 11-Zeichen-Code aus dem YouTube-Video zu speichern.

Für z.B. http://www.youtube.com/watch?v=Ahg6qcgoay4

Der elfstellige Code lautet: Ahg6qcgoay4

Dann nehmen Sie diesen Code und platzieren ihn in Ihrer Datenbank. Dann, wo immer Sie das YouTube-Video auf Ihrer Seite platzieren möchten, laden Sie den Charakter aus der Datenbank und geben Sie den folgenden Code ein: -

z.B. für Ahg6qcgoay4 wird es sein:

<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>
86
Alec Smart

Speichern Sie den Einbettungscode nicht in Ihrer Datenbank. YouTube kann den Einbettungscode und die URL-Parameter von Zeit zu Zeit ändern. Zum Beispiel das <object> Einbettungscode wurde zurückgezogen zu Gunsten von <iframe> Code einbetten. Sie sollten die Video-ID aus dem URL-/Einbettungscode (mit regulären Ausdrücken, URL-Parsing-Funktionen oder HTML-Parser) auslesen und speichern. Zeigen Sie es dann mit dem aktuell von der YouTube-API angebotenen Mechanismus an.

Ein naives PHP Beispiel zum Extrahieren der Video-ID lautet wie folgt:

<?php
    preg_match(
        '/[\\?\\&]v=([^\\?\\&]+)/',
        'http://www.youtube.com/watch?v=OzHvVoUGTOM&feature=channel',
        $matches
    );
    // $matches[1] should contain the youtube id
?>

Ich schlage vor, dass Sie sich diese Artikel ansehen, um herauszufinden, was Sie mit diesen IDs tun sollen:

So erstellen Sie Ihren eigenen YouTube-Videoplayer:

51
Salman A

Über lange und kurze Youtube-URLs können Sie die Einbettung folgendermaßen abrufen:

$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>";

Hoffe es hilft jemandem

16
fanky

Das <object> und <embed> Tags sind veraltet gemäß HTML Youtube Videos , es ist vorzuziehen, die <iframe> Tag, um dies zu tun.

<iframe width="420" height="315"
src="http://www.youtube.com/embed/XGSy3_Czz8k?autoplay=1">
</iframe>

Damit Ihre Nutzer nicht ihr ganzes Leben lang versuchen, die Video-ID in Links zu finden, um sie in Ihr Formularfeld einzufügen, lassen Sie sie den Link des gefundenen Videos auf youtube posten und Sie können den folgenden regulären Ausdruck verwenden, um die Video-ID zu erhalten :

preg_match("/^(?:http(?:s)?:\/\/)?
    (?:www\.)?(?:m\.)?(?:youtu\.be\/|youtube\.com\/(?:(?:watch)?\?(?:.*&)?v(?:i)?=|
    (?:embed|v|vi|user)\/))([^\?&\"'>]+)/", $url, $matches);

Um die Video-ID zu erhalten, können Sie sie abrufen. $matches[1], diese stimmen überein mit:

Ein Teil dieser Antwort bezieht sich auf die Antwort von @ shawn in diese Frage .

12
KAD

Benutze einen regulären Ausdruck, um die "Video-ID" nach watch?v= Zu extrahieren.

Speichern Sie die Video-ID in einer Variablen, nennen wir diese Variable vid

Holen Sie sich den Einbettungscode aus einem zufälligen Video, entfernen Sie die Video-ID aus dem Einbettungscode und ersetzen Sie sie durch das vid, das Sie erhalten haben.

Ich weiß nicht, wie ich mit Regex in PHP umgehen soll, aber es sollte nicht zu schwer sein

Hier ist ein Beispielcode in 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>
>>>

Der reguläre Ausdruck v\=([\-\w]+) erfasst eine (Unter-) Zeichenfolge und Bindestriche, die nach v= Folgt.

7
hasen

Hier ist ein Code, den ich geschrieben habe, um URLs automatisch in Links umzuwandeln und alle Video-URLs von YouTube automatisch einzubetten. Ich habe es für einen Chatraum gemacht, an dem ich arbeite, und es funktioniert ziemlich gut. Ich bin sicher, es wird auch für andere Zwecke gut funktionieren, wie zum Beispiel für ein Blog.

Sie müssen nur die Funktion "autolink ()" aufrufen und die zu analysierende Zeichenfolge übergeben.

Nehmen Sie zum Beispiel die folgende Funktion auf und geben Sie diesen Code wieder.

`
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
Ross

Wenn Sie Videos programmgesteuert hochladen möchten, überprüfen Sie die YouTube Data API für PHP

3
CMS

Mit Joomla geht das ganz einfach. Lassen Sie mich eine YouTube-Beispiel-URL annehmen - 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
user2589739

Nach demselben Thema suchend, fand ich eine andere Methode, die Javascript und Youtube APIs verwendet

Direkt von: http://code.google.com/apis/ajax/playground/#simple_embed

Laden der API

<script src="http://www.google.com/jsapi" type="text/javascript"></script>

Und den folgenden Javascript-Code ausführen:

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

Das vollständige Beispiel finden Sie auf der zuvor genannten Seite http://code.google.com/apis/ajax/playground

2
OscarRyz

Sie können einfach ein PHP-Eingabeformular für Varchar date Erstellen und es mit einer varchar Länge von etwa 300 Zeichen versehen. Bitten Sie dann die Benutzer, den Einbettungscode zu kopieren und einzufügen Das gestreamte Video wird angezeigt.

1
haider

luvboy,

Wenn ich es klar verstehe, gibt der Nutzer die URL/den Code des Youtube-Videos an und das Video wird auf der Seite angezeigt.

Schreiben Sie dazu einfach eine einfache Seite mit Layout usw. Kopieren Sie den Video-Einbettungscode von YouTube und fügen Sie ihn in Ihre Seite ein. Ersetzen Sie den Einbettungscode durch ein Feld, z. B. VideoID. Stellen Sie diese Video-ID auf den von Ihrem Benutzer bereitgestellten Code ein.

edit: siehe antwort von Alec Smart.

0
Akshay

Nur ein kleines Update zu Alec Smarts Antwort: Da AS2 jetzt veraltet ist, ist die '? Version = 3' erforderlich, damit sein Beispiel funktioniert. Weitere Informationen finden Sie in der Youtube-Referenz unter Eingebettete YouTube-Player und Player-Parameter unter "Auswählen von Inhalten zum Abspielen".

Mit anderen Worten:

<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>

Anscheinend sieht die obige Youtube-Referenz folgendermaßen aus (die innere Einbettung wird vermutlich als Fallback für Browser verwendet, die das Objekt-Tag noch nicht unterstützen):

<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>

Oder verwenden Sie iframes (ersetzen Sie http://example.com durch die Domain Ihrer 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
Ryan Shih