我想使用preg_match或regex从YouTube嵌入代码中获取YouTube视频ID。例如
<iframe width="560" height="315" src="//www.youtube.com/embed/0gugBiEkLwU?rel=0" frameborder="0" allowfullscreen></iframe>
我想获取ID 0gugBiEkLwU
任何人都可以告诉我如何做到这一点。非常适合你的帮助。
答案 0 :(得分:6)
答案 1 :(得分:3)
答案 2 :(得分:2)
我知道这已经很晚了,但是我想出了一些可能仍在寻找的人。 由于并非所有Youtube iframe src属性都以“?rel =”结尾,并且有时可以在另一个查询字符串中结尾或以双引号结尾,因此您可以使用:
/embed\/([\w+\-+]+)[\"\?]/
这会在“/ embed /”之后和结束的双引号/查询字符串之前捕获任何内容。选择可以包括任何字母,数字,下划线和连字符。
以下是一个包含多个示例的演示:https://regex101.com/r/eW7rC1/1
答案 3 :(得分:0)
以下功能会从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);