2014-06-26 44 views
0

我有一個YouTube的嵌入網址這樣如何使用PHP從嵌入URL獲取視頻ID?

<object width="420" height="315"> 
<param name="movie" value="//www.youtube.com/v/whTwjG4ZIJg?version=3&hl=en_US"></param> 
<param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param> 
<embed src="//www.youtube.com/v/whTwjG4ZIJg?version=3&hl=en_US" type="application/x-shockwave-flash" width="420" height="315" allowscriptaccess="always" allowfullscreen="true"> 
</embed></object> 

現在我想視頻的ID使用PHP。請人幫忙

回答

1

你可以使用這樣的事情來獲得Youtube鏈接的ID:

$your_url='http://www.youtube.com/watch?var1=blabla#v=GvJehZx3eQ1$var2=bla'; 

function get_youtube_id_from_url($url){ 
    if (stristr($url,'youtu.be/')) 
     { preg_match('/(https:|http:|)(\/\/www\.|\/\/|)(.*?)\/(.{11})/i', $url, $final_ID); return $final_ID[4]; } 
    else 
     { preg_match('/(https:|http:|):(\/\/www\.|\/\/|)(.*?)\/(embed\/|watch\?v=|(.*?)&v=|v\/|e\/|.+\/|watch.*v=|)([a-z_A-Z0-9]{11})/i', $url, $IDD); return $IDD[6]; } 
} 

echo get_youtube_id_from_url($your_url); 

輸出:

GvJehZx3eQ1 

而且這樣的事情來獲得來自YouTube的鏈接embed標籤:

$sLink = "<embed src=\"www.youtube.com/v/whTwjG4ZIJg?version=3&hl=en_US\"></embed>"; 
preg_match('/< *embed[^>]*src *= *["\']?([^"\']*)/i', $sLink,$aMatch); 
echo $aMatch[1]; 

輸出:

www.youtube.com/v/whTwjG4ZIJg?version=3&hl=en_US 

你將不得不使用你的邏輯一點點,使這兩個功能一起工作:)但是,這是一個很好的起點!

請注意,如果您將表達式用雙引號引起來,"將需要用\進行轉義。

P.S:從某處得到第一個函數,只是不記得在哪裏。

編輯

您也可以使用Javascript此:

var re = /(\?v=|\/\d\/|\/embed\/|\/v\/|\.be\/)([a-zA-Z0-9\-\_]+)/; 
var urlArr = [ 
    "http://www.youtube.com/watch?v=0zM3nApSvMg&feature=feedrec_grec_index", 
    "http://www.youtube.com/user/IngridMichaelsonVEVO#p/a/u/1/QdK8U-VIH_o",    
]; 
for (var i = 0; i < urlArr.length; i++) { 
    alert(urlArr[i].match(re)[2]); 
} 

的jsfiddle: http://jsfiddle.net/A7LYZ/

0

既然你要處理的標籤,你也可以使用DOMDocument來獲取價值。你可以這樣做:

$html = '<object width="420" height="315"><param name="movie" value="//www.youtube.com/v/whTwjG4ZIJg?version=3&hl=en_US"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="//www.youtube.com/v/whTwjG4ZIJg?version=3&hl=en_US" type="application/x-shockwave-flash" width="420" height="315" allowscriptaccess="always" allowfullscreen="true"></embed></object>'; 
$dom = new DOMDocument(); 
libxml_use_internal_errors(true); 
$dom->loadHTML($html); 
libxml_clear_errors(); 
$youtube_link = $dom->getElementsByTagName('embed')->item(0)->getAttribute('src'); 
echo $youtube_link; // //www.youtube.com/v/whTwjG4ZIJg?version=3&hl=en_US 
相關問題