Youtube API - Extract video ID(Youtube API - 提取视频 ID)
问题描述
我正在编写允许用户输入 Youtube 视频 URL 的功能.我想从这些网址中提取视频 ID.
I am coding a functionality that allows users to enter a Youtube video URL. I would like to extract the video ID from these urls.
Youtube API 是否支持我传递链接并返回视频 ID 的某种功能.还是我必须自己解析字符串?
Does Youtube API support some kind of function where I pass the link and it gives the video ID in return. Or do I have to parse the string myself?
我正在使用 PHP ......我很感激这方面的任何指针/代码示例.
I am using PHP ... I would appreciate any pointers / code samples in this regard.
谢谢
推荐答案
这是一个使用正则表达式从 URL 中提取 youtube ID 的示例函数:
Here is an example function that uses a regular expression to extract the youtube ID from a URL:
/**
* 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 有一个 oembed 服务:
It's not directly the API you're looking for but probably helpful. Youtube has an oembed service:
$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 的元信息:
Which provides some more meta-information about the 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 网址.
But the ID is not a direct part of the response. However it might contain the information you're looking for and it might be useful to validate the youtube URL.
这篇关于Youtube API - 提取视频 ID的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:Youtube API - 提取视频 ID
基础教程推荐
- 如何在 Laravel 5.3 注册中添加动态下拉列表列? 2021-01-01
- 有什么方法可以用编码 UTF-8 而不是 Unicode 返回 PHP`json_encode`? 2021-01-01
- Cron Jobs 调用带有变量的 PHP 脚本 2022-01-01
- YouTube API v3 点赞视频,但计数器不增加 2022-01-01
- 如何在 Laravel 中使用 React Router? 2022-01-01
- 在PHP中根据W3C规范Unicode 2022-01-01
- 学说 dbal querybuilder 作为准备好的语句 2022-01-01
- PHP 类:全局变量作为类中的属性 2021-01-01
- 如何替换eregi() 2022-01-01
- PHP PDO MySQL 查询 LIKE ->多个关键词 2021-01-01
