61 Stimmen

Wie können YouTube-Videos in PHP eingebettet werden?

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

0 Stimmen

Das ist keine Upload, sondern Einbetten.

6 Stimmen

Es wird auch nicht in PHP eingebettet...

92voto

Alec Smart Punkte 89578

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

Zum Beispiel http://www.youtube.com/watch?v=Ahg6qcgoay4

Der elfstellige Code lautet: Ahg6qcgoay4

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

zum Beispiel für Ahg6qcgoay4 lautet er:

1 Stimmen

Dies ist sehr einfach... danke Kumpel

20 Stimmen

Die Bitte an den Benutzer, den Code aus der URL zu extrahieren, ist keine gute Idee, es ist sehr einfach, Code mithilfe von Regex zu extrahieren! -1

0 Stimmen

Vielen Dank, das ist eine so nützliche Lösung

53voto

Salman A Punkte 246207

Speichern Sie den Einbettungscode nicht in Ihrer Datenbank -- YouTube kann den Einbettungscode und die URL-Parameter von Zeit zu Zeit ändern. Zum Beispiel wurde der Einbettungscode zugunsten des `</code> Einbettungscodes eingestellt. Sie sollten die Video-ID aus der URL/dem Einbettungscode extrahieren (mithilfe von regulären Ausdrücken, URL-Analysefunktionen oder einem HTML-Parser) und speichern. Anschließend sollten Sie es mit dem derzeit von der YouTube API angebotenen Mechanismus anzeigen.</p> <p>Ein einfaches PHP-Beispiel zum Extrahieren der Video-ID lautet wie folgt:</p> <pre><code><?php preg_match( '/[\\?\\&]v=([^\\?\\&]+)/', 'http://www.youtube.com/watch?v=OzHvVoUGTOM&feature=channel', $matches ); // $matches[1] sollte die YouTube-ID enthalten ?> </code></pre> <p>Ich schlage vor, dass Sie sich diese Artikel ansehen, um herauszufinden, was Sie mit diesen IDs machen können:</p> <ul> <li><a href="http://salman-w.blogspot.com/2012/07/youtube-iframe-embeds-video-playlist-and-html5.html" rel="noreferrer">YouTube-Videos, Wiedergabelisten und mehr mit IFrame-Einbettungen einbinden</a></li> </ul> <p>Um Ihren eigenen YouTube-Videoplayer zu erstellen:</p> <ul> <li><a href="https://developers.google.com/youtube/player_parameters" rel="noreferrer">YouTube Embedded Player-Parameter</a></li> <li><a href="https://developers.google.com/youtube/js_api_reference" rel="noreferrer">Referenz zur YouTube JavaScript Player-API</a></li> </ul></x-turndown>`

0 Stimmen

Kannst du erklären, was [\\?\\&] macht? Ich finde diesen Teil wirklich verwirrend.

0 Stimmen

Okay, da es sich um eine einfach nummerierte Zeichenkette handelt, ist \\? dasselbe wie \? (` escapet nur ` oder ')

1 Stimmen

? und & sind Abfragezeichen-Trennzeichen (v= wie in www.youtube.com/watch?v=ABCDEFGH&feature=feedrec_grec_index und www.youtube.com/watch?feature=feedrec_grec_index&v=ABCDEFGH)‌​. Das Escapen von ? und & ist tatsächlich übertrieben. [?&] und [^?&] reichen aus.

17voto

fanky Punkte 171

Von sowohl langen als auch kurzen Youtube-URLs können Sie das Einbetten auf diese Weise erhalten:

$ytarray=explode("/", $videolink);
$ytendstring=end($ytarray);
$ytendarray=explode("?v=", $ytendstring);
$ytendstring=end($ytendarray);
$ytendarray=explode("&", $ytendstring);
$ytcode=$ytendarray[0];
echo "";

Hoffe, es hilft jemandem

14voto

KAD Punkte 10563

Die `und Tags sind veraltet gemäß [HTML Youtube Videos](http://www.w3schools.com/html/html_youtube.asp), es ist empfehlenswert stattdessen das</code> Tag zu nutzen.</p> <pre><code><iframe width="420" height="315" src="http://www.youtube.com/embed/XGSy3_Czz8k?autoplay=1">`

Damit Ihre Benutzer nicht ihr ganzes Leben damit verbringen müssen, die Video-ID in Links zu finden, um sie in Ihr Formularfeld einzugeben, lassen Sie sie den Link des Videos, das sie auf YouTube finden, posten, und Sie können das folgende Regex 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 mit $matches[1] abrufen, dies passt zu:

Ein Teil dieser Antwort wird auf die Antwort von @shawn in dieser Frage verwiesen.

``

0 Stimmen

Die neuen Zeilen / Leerzeichen haben mich durcheinandergebracht. Denke daran, sie beim Kopieren/Einfügen zu entfernen.

5voto

Ross Punkte 51

Hier ist etwas Code, den ich geschrieben habe, um automatisch URLs in Links umzuwandeln und automatisch alle Video-URLs von YouTube einzubetten. Ich habe es für einen Chatroom entwickelt, an dem ich arbeite, und es funktioniert ziemlich gut. Ich bin mir sicher, dass es genauso gut für jeden anderen Zweck funktionieren wird, wie z.B. für einen Blog.

Alles was du tun musst, ist die Funktion "autolink()" aufzurufen und ihr den zu analysierenden String zu übergeben.

Zum Beispiel füge die unten stehende Funktion ein und gib dann diesen Code aus.

`
echo ''.autolink($string).'';

/****************Funktion zum Einbinden****************/

'.$links[$j].'',$string).'';

    }else{

    $string=str_replace($links[$j],''.$links[$j].'',$string);

        } 

    } 
} 

               return ($string);
 }

?>

`

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X