我想使用preg_match或regex從YouTube嵌入代碼獲取YouTube視頻ID。對於例如從嵌入的iframe代碼獲取YouTube視頻ID
<iframe width="560" height="315" src="//www.youtube.com/embed/0gugBiEkLwU?rel=0" frameborder="0" allowfullscreen></iframe>
我想借此ID 0gugBiEkLwU
誰能告訴我如何做到這一點。真的很適合你的幫助。
我想使用preg_match或regex從YouTube嵌入代碼獲取YouTube視頻ID。對於例如從嵌入的iframe代碼獲取YouTube視頻ID
<iframe width="560" height="315" src="//www.youtube.com/embed/0gugBiEkLwU?rel=0" frameborder="0" allowfullscreen></iframe>
我想借此ID 0gugBiEkLwU
誰能告訴我如何做到這一點。真的很適合你的幫助。
我知道這是相當晚了,但我想出了東西誰可能仍然在尋找的人。 由於不是所有的Youtube IFRAME SRC屬性中的「?相對=」結束,可以在另一個查詢字符串有時最終還是以雙引號結束,你可以使用:
/embed\/([\w+\-+]+)[\"\?]/
這之後捕獲任何「/嵌入/ 「並在結束雙引號/查詢字符串之前。選擇可以包括任何字母,數字,下劃線和連字符。
這裏有多個實例演示:https://regex101.com/r/eW7rC1/1
以下功能將從YouTube網址考覈的所有格式中提取的YouTube視頻ID,
function getYoutubeVideoId($iframeCode) {
// Extract video url from embed code
return preg_replace_callback('/<iframe\s+.*?\s+src=(".*?").*?<\/iframe>/', function ($matches) {
// Remove quotes
$youtubeUrl = $matches[1];
$youtubeUrl = trim($youtubeUrl, '"');
$youtubeUrl = trim($youtubeUrl, "'");
// Extract id
preg_match("/^(?:http(?:s)?:\/\/)?(?:www\.)?(?:m\.)?(?:youtu\.be\/|youtube\.com\/(?:(?:watch)?\?(?:.*&)?v(?:i)?=|(?:embed|v|vi|user)\/))([^\?&\"'>]+)/", $youtubeUrl, $videoId);
return $youtubeVideoId = isset($videoId[1]) ? $videoId[1] : "";
}, $iframeCode);
}
$iframeCode = '<iframe width="560" height="315" src="http://www.youtube.com/embed/0gugBiEkLwU?rel=0" frameborder="0" allowfullscreen></iframe>';
// Returns youtube video id
echo getYoutubeVideoId($iframeCode);
[正則表達式模式以獲得在YouTube視頻中可能重複來自任何YouTube網址的ID](http://stackoverflow.com/questions/9594943/regex-pattern-to-get-the-youtube-video-id-from-any-youtube-url) – Rikesh
[How to使用正則表達式查找字符串中的所有Youtube視頻ID?](http://stackoverflow.com/questions/5830387/how-to-find-all-youtube-video-ids-in-a-string-using-a-正則表達式) – HamZa