it-swarm.com.de

Finden Sie den YouTube-Link in PHP String und Konvertieren Sie es in Embed-Code?

Finden Sie ein Youtube - Video link in PHP String und convert in Embed Code?

Code einbetten:

<iframe width="420" height="315" src="//www.youtube.com/embed/0GfCP5CWHO0" frameborder="0" allowfullscreen></iframe>

PHP Code/String:

<?php echo $post_details['description']; ?>

Youtube Link:

http://www.youtube.com/watch?v=0GfCP5CWHO0
14
Hassan Sardar

Versuche dies:

preg_replace("/\s*[a-zA-Z\/\/:\.]*youtube.com\/watch\?v=([a-zA-Z0-9\-_]+)([a-zA-Z0-9\/\*\-\_\?\&\;\%\=\.]*)/i","<iframe width=\"420\" height=\"315\" src=\"//www.youtube.com/embed/$1\" frameborder=\"0\" allowfullscreen></iframe>",$post_details['description']);
27

Eine kleine Verbesserung der Lösung von Joran, um auch das kurze URL-Format von YouTube zu verarbeiten:

function convertYoutube($string) {
    return preg_replace(
        "/\s*[a-zA-Z\/\/:\.]*youtu(be.com\/watch\?v=|.be\/)([a-zA-Z0-9\-_]+)([a-zA-Z0-9\/\*\-\_\?\&\;\%\=\.]*)/i",
        "<iframe src=\"//www.youtube.com/embed/$2\" allowfullscreen></iframe>",
        $string
    );
}

Sie können diese Funktion online testen hier

25
Syone

Es gibt zwei Arten von Youtube-Links:

Zum Beispiel : 

$type1 = 'https://www.youtube.com/watch?v=NVcpJZJ60Ao';
$type2 = 'https://www.youtu.be/NVcpJZJ60Ao';

Diese Links beziehen sich auf das gleiche Video . Ich habe eine Funktion aus hier gefunden, die die beiden Links behandelt! :

function getYoutubeEmbedUrl($url)
{
    $shortUrlRegex = '/youtu.be\/([a-zA-Z0-9_]+)\??/i';
    $longUrlRegex = '/youtube.com\/((?:embed)|(?:watch))((?:\?v\=)|(?:\/))(\w+)/i';

    if (preg_match($longUrlRegex, $url, $matches)) {
        $youtube_id = $matches[count($matches) - 1];
    }

    if (preg_match($shortUrlRegex, $url, $matches)) {
        $youtube_id = $matches[count($matches) - 1];
    }
    return 'https://www.youtube.com/embed/' . $youtube_id ;
}

Die Ausgabe von $ type1 oder $ type2 wäre gleich: 

 $output1 = getYoutubeEmbedUrl($type1);
 $output2 = getYoutubeEmbedUrl($type2);

$ output1 und $ output2: 

'https://www.youtube.com/embed/NVcpJZJ60Ao'

Jetzt können Sie es in iframe verwenden!

14
Ahmad Mobaraki

Eine schnelle Funktion zum Generieren von Embed-URL-Links von FB/Vimeo/Youtube-Videos.

public function generateVideoEmbedUrl($url){
    //This is a general function for generating an embed link of an FB/Vimeo/Youtube Video.
    $finalUrl = '';
    if(strpos($url, 'facebook.com/') !== false) {
        //it is FB video
        $finalUrl.='https://www.facebook.com/plugins/video.php?href='.rawurlencode($url).'&show_text=1&width=200';
    }else if(strpos($url, 'vimeo.com/') !== false) {
        //it is Vimeo video
        $videoId = explode("vimeo.com/",$url)[1];
        if(strpos($videoId, '&') !== false){
            $videoId = explode("&",$videoId)[0];
        }
        $finalUrl.='https://player.vimeo.com/video/'.$videoId;
    }else if(strpos($url, 'youtube.com/') !== false) {
        //it is Youtube video
        $videoId = explode("v=",$url)[1];
        if(strpos($videoId, '&') !== false){
            $videoId = explode("&",$videoId)[0];
        }
        $finalUrl.='https://www.youtube.com/embed/'.$videoId;
    }else if(strpos($url, 'youtu.be/') !== false){
        //it is Youtube video
        $videoId = explode("youtu.be/",$url)[1];
        if(strpos($videoId, '&') !== false){
            $videoId = explode("&",$videoId)[0];
        }
        $finalUrl.='https://www.youtube.com/embed/'.$videoId;
    }else{
        //Enter valid video URL
    }
    return $finalUrl;
}
8
niravpatel9898

Ich denke, eine sichere, super einfache Möglichkeit, die ID zu erhalten
Ein bisschen kugelsicher ist es, einfach die URL-Struktur zu verwenden. 

function getYoutubeEmbedUrl($url){

    $urlParts   = explode('/', $url);
    $vidid      = explode( '&', str_replace('watch?v=', '', end($urlParts) ) );

    return 'https://www.youtube.com/embed/' . $vidid[0] ;
}
3
Sagive SEO

Ich weiß, dass dies ein alter Thread ist, aber für alle, die diese Herausforderung haben und Hilfe suchen, habe ich eine PHP - Klasse auf GitHub - Embera gefunden.

Im Grunde eine Oembed-Bibliothek, die YouTube-URLs in beliebigen Zeichenfolgen in das zugehörige iframe-Element konvertiert. Ich benutze es und werde es auch weiterhin überall verwenden!

3
Luke Stevenson

Unten können Sie für alle Arten von YouTube-URLs arbeiten.

preg_match('%(?:youtube(?:-nocookie)?\.com/(?:[^/]+/.+/|(?:v|e(?:mbed)?)/|.*[?&]v=)|youtu\.be/)([^"&?/ ]{11})%i', $url, $match);

$youtube_id = $match[1];
1
Mahesh Yadav

Wenn die Zeichenfolge von einer Benutzereingabe stammt oder in any unvorhersehbar ist, dann vergessen Sie RegEx ... ernsthaft. Es wird eine Dose Würmer für Sie öffnen.

Versuchen Sie stattdessen, einen HTML-Parser zu verwenden, um die URL anhand bestimmter Regeln und Selektoren zu extrahieren.

Ich verwende hauptsächlich ColdFsuion/Java, und JSoup ist für diese Art von Sache erstaunlich, mit viel mehr Leichtigkeit und Sicherheit.

http://jsoup.org/

Es scheint, dass Sie in PHP etwas wie folgt verwenden könnten:

http://code.google.com/p/phpquery/

Ich würde gerne ein Codebeispiel geben, aber ich kenne PHP nicht gut genug. Aber probieren Sie es aus.

Mikey.

Nun, Sie müssen zuerst die Youtube-Links herausfiltern und in ein Array einfügen. Als nächstes müssen Sie die Video-ID der URL herausfinden, was sehr einfach ist. Verwenden Sie dieses Skript:

function getIDfromURL() {
var video_url = document.getElementById('url').value;
var video_id = video_url.split('v=')[1];
var ampersandPosition = video_id.indexOf('&');
if (ampersandPosition != -1) { video_id = video_id.substring(0, ampersandPosition); }
document.getElementById('url').value=video_id;
}

Sie können natürlich auch eine PHP - Funktion verwenden, aber ich habe hier nur JS verwendet, um die ID aus der URL zu erhalten. Vielleicht hat das irgendwie geholfen;)

Mit der Video-ID kannst du das Video einbetten;)

0
Tim Nikischin
<?php
$url = 'https://www.youtube.com/watch?v=u9-kU7gfuFA';
preg_match('/[\\?\\&]v=([^\\?\\&]+)/', $url, $matches);
$id = $matches[1];
$width = '800px';
$height = '450px'; ?>

<iframe id="ytplayer" type="text/html" width="<?php echo $width ?>" height="<?php echo $height ?>"
src="https://www.youtube.com/embed/<?php echo $id ?>?rel=0&showinfo=0&color=white&iv_load_policy=3"
frameborder="0" allowfullscreen></iframe> 
0
Shakil Hossain