我正在编写一种功能,允许用户输入Youtube视频URL。我想从这些网址中提取视频ID。
Youtube API是否支持某种函数,我可以通过该函数传递链接,它会返回视频ID。还是我必须自己解析字符串?
我正在使用PHP …在这方面,我将不胜感激任何指针/代码示例。
谢谢
以下是使用正则表达式从URL提取youtube ID的示例函数:
/** * get youtube video ID from URL * * @param string $url * @return string Youtube video id or FALSE if none found. */ function youtube_id_from_url($url) { $pattern = '%^# Match any youtube URL (?:https?://)? # Optional scheme. Either http or https (?:www\.)? # Optional www subdomain (?: # Group host alternatives youtu\.be/ # Either youtu.be, | youtube\.com # or youtube.com (?: # Group path alternatives /embed/ # Either /embed/ | /v/ # or /v/ | /watch\?v= # or /watch\?v= ) # End path alternatives. ) # End host alternatives. ([\w-]{10,12}) # Allow 10-12 for 11 char youtube id. $%x' ; $result = preg_match($pattern, $url, $matches); if ($result) { return $matches[1]; } return false; } echo youtube_id_from_url('http://youtu.be/NLqAF9hrVbY'); # NLqAF9hrVbY
它不是您要查找的API的直接来源,但可能会有所帮助。Youtube有一项固定服务:
$url = 'http://youtu.be/NLqAF9hrVbY'; var_dump(json_decode(file_get_contents(sprintf('http://www.youtube.com/oembed?url=%s&format=json', urlencode($url)))));
其中提供了有关URL的更多元信息:
object(stdClass)#1 (13) { ["provider_url"]=> string(23) "http://www.youtube.com/" ["title"]=> string(63) "Hang Gliding: 3 Flights in 8 Days at Northside Point of the Mtn" ["html"]=> string(411) "<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/NLqAF9hrVbY?version=3"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/NLqAF9hrVbY?version=3" type="application/x-shockwave-flash" width="425" height="344" allowscriptaccess="always" allowfullscreen="true"></embed></object>" ["author_name"]=> string(11) "widgewunner" ["height"]=> int(344) ["thumbnail_width"]=> int(480) ["width"]=> int(425) ["version"]=> string(3) "1.0" ["author_url"]=> string(39) "http://www.youtube.com/user/widgewunner" ["provider_name"]=> string(7) "YouTube" ["thumbnail_url"]=> string(48) "http://i3.ytimg.com/vi/NLqAF9hrVbY/hqdefault.jpg" ["type"]=> string(5) "video" ["thumbnail_height"]=> int(360) }
但是ID并不是响应的直接部分。但是,它可能包含您要查找的信息,并且可能对验证youtube URL有用。