2013-06-10 3 views
13

Wie bekomme ich die Youtube-URL von dem folgenden Link?Wie bekomme ich URL vom iFrame mit PHP

<iframe title="YouTube video player" width="640" height="390" 
src="http://www.youtube.com/embed/VvJ037b_kLs" 
frameborder="0" allowfullscreen></iframe> 

Antwort

30

können Sie verwenden regex und preg_match Funktion

preg_match('/src="([^"]+)"/', $iframe_string, $match); 
$url = $match[1]; 
+1

was, wenn es nicht eine Zeichenfolge und ein tatsächlicher Rahmen in einem webp Alter? – pinkpanther

+0

@pinkpanther Sie können die Funktion ob_get_contents verwenden, um den Inhalt des Puffers abzurufen. Am Anfang musst du ob_start ausführen. ob_get_contents muss nach dem iframe ausgeführt werden. Und Regex muss auch Iframe drin haben. – jcubic

+0

@pinkpanther Ihre beste Wette ist, den DOMXpath() Parser zu verwenden ... – Tonithy

0
<?php 
function getHtmlElement($html,$startOfElement,$endOfElement) 
{ 
    $startingPosition = strpos($html, $startOfElement); 
    $endPosition = strpos($html, $endOfElement,$startingPosition); 
    $foundElement = substr($html, $startingPosition,$endPosition); 

    return $foundElement; 
} 

    $html = file_get_contents('http://www.youtube.com/'); 
    $startOfElement = '<div id="guide"'; 
    $endOfElement = "<"; 

    $myElement = getHtmlElement($html,$startOfElement,$endOfElement); 

    echo $myElement; 

ich nach einem Weg suchen, HTML-Elemente aus URLs zu nehmen, aber ich fand nicht, ein so schrieb ich this.It Werke genau wie im Beispiel gezeigt. Nachdem Sie das Element erhalten haben, können Sie die gleiche Logik anwenden wie die Funktion, die ich geschrieben habe, um einen Teil der gewünschten Zeichenfolge zu erhalten.

1
public function makeiframevideo($url) 
{ 

    // Youtube 
    $ytRegExp = "/^(?:https?:\/\/)?(?:www\.)?(?:youtu\.be\/|youtube\.com\/(?:embed\/|v\/|watch\?v=|watch\?.+&v=))((\w|-){11})(?:\S+)?$/"; 
    preg_match($ytRegExp, $url, $ytMatch); 
    if ($ytMatch && strlen($ytMatch[1]) === 11) { 
     return "<iframe frameborder=\"0\" allowfullscreen class=\"pull-left\" id=\"ytplayer\" type=\"text/html\" width=\"100%\" height=\"405\" src=\"//www.youtube.com/embed/{$ytMatch[1]}?showinfo=0\" ></iframe>"; 
    } 

    // Instagram 
    $igRegExp = "/^(?:https?:\/\/)?(?:www\.)?instagram.com\/p\/(.[a-zA-Z0-9\_]*)/"; 
    preg_match($igRegExp, $url, $igMatch); 
    if ($igMatch && strlen($igMatch[0])) { 
     return "<iframe frameborder=\"0\" allowfullscreen class=\"pull-left\" id=\"ytplayer\" type=\"text/html\" width=\"100%\" height=\"405\" src='{$igMatch[0]}/embed/' ></iframe>"; 
    } 

    // Vine 
    $vRegExp = "/^(?:https?:\/\/)?(?:www\.)?vine.co\/v\/(.[a-zA-Z0-9]*)/"; 
    preg_match($vRegExp, $url, $vMatch); 
    if ($vMatch && strlen($vMatch[0])) { 
     return "<iframe frameborder=\"0\" allowfullscreen class=\"pull-left\" id=\"ytplayer\" type=\"text/html\" width=\"100%\" height=\"405\" src='{$vMatch[0]}/embed/simple' ></iframe>"; 
    } 

    // Vimeo 
    $vimRegExp = " /\/\/(player.)?vimeo.com\/([a-z]*\/)*([0-9]{6,11})[?]?.*/"; 
    preg_match($vimRegExp, $url, $vimMatch); 
    if ($vimMatch && strlen($vimMatch[3])) { 
     return "<iframe frameborder=\"0\" allowfullscreen class=\"pull-left\" id=\"ytplayer\" type=\"text/html\" width=\"100%\" height=\"405\" src='//player.vimeo.com/video/{$vimMatch[3]}' ></iframe>"; 
    } 

    // Dailymotion 
    $dmRegExp = "/.+dailymotion.com\/(video|hub)\/([^_]+)[^#]*(#video=([^_&]+))?/"; 
    preg_match($dmRegExp, $url, $dmMatch); 
    if ($dmMatch && strlen($dmMatch[2])) { 
     return "<iframe frameborder=\"0\" allowfullscreen class=\"pull-left\" id=\"ytplayer\" type=\"text/html\" width=\"100%\" height=\"405\" src='//www.dailymotion.com/embed/video/{$dmMatch[2]}' ></iframe>"; 
    } 

    // Youku 
    $youkuRegExp = "/\/\/v\.youku\.com\/v_show\/id_(\w+)/"; 
    preg_match($youkuRegExp, $url, $youkuMatch); 
    if ($youkuMatch && strlen($youkuMatch[1])) { 
     return "<iframe frameborder=\"0\" allowfullscreen class=\"pull-left\" id=\"ytplayer\" type=\"text/html\" width=\"100%\" height=\"405\" src='//player.youku.com/embed/{$youkuMatch[1]}' ></iframe>"; 
    } 



    $mp4RegExp = '/^.+.(mp4|m4v)$/'; 
    preg_match($mp4RegExp, $url, $mp4Match); 

    $oggRegExp = '/^.+.(ogg|ogv)$/'; 
    preg_match($oggRegExp, $url, $oggMatch); 

    $webmRegExp = '/^.+.(webm)$/'; 
    preg_match($webmRegExp, $url, $webmMatch); 

    if ($mp4Match || $oggMatch || $webmMatch) { 
     return $url; 
    } 

    return ""; 
} 
0
<?php 
$url = '<iframe title="YouTube video player" width="640" height="390" src="http://www.youtube.com/embed/VvJ037b_kLs" frameborder="0" allowfullscreen></iframe> '; 
$tmpDoc = new DOMDocument(); 

# Dirty hack to support utf-8 with loadHTML 
# http://php.net/manual/en/domdocument.loadhtml.php#95251 
@$tmpDoc->loadHTML('<?xml encoding="UTF-8">' . $url); 
foreach ($tmpDoc->childNodes as $item) { 
    if ($item->nodeType == XML_PI_NODE) { 
     $tmpDoc->removeChild($item);// remove hack 
    } 
} 
$tmpDoc->encoding = 'UTF-8'; // insert proper 

$body = $tmpDoc->getElementsByTagName('body'); 

if (! $body->length) { 
    return null; 
} 

$nodes = $body->item(0)->childNodes; 

if (empty($nodes)) { 
    return null; 
} 

echo $nodes->item(0)->getAttribute('src'); 
0

Mein html webcode ist:

<div url="doctor.videoLink"><div class="media-youtube-video"> 
      <iframe src="https://www.youtube.com/embed/YZvJZrfw5oo?rel=0&amp;enablejsapi=1" frameborder="0" allowfullscreen="" id="widget2"></iframe> 
</div> 
</div> 

Und ich retrive src von iframe wie:

foreach($kolPro->find('div.video div div iframe') as $youTube) 
          { 
           //$kolsData['you_tube']=$youTube->innertext(); 
           preg_match('/src="([^"]+)"/', $youTube, $match); 
           $youtubeLink= $match[1]; 
          }