如何从网址获取YouTube视频ID
how to get youtube video id from url
我正在尝试检查网址是否是有效的YouTube视频URL并从中获取youtube视频ID,到目前为止,我正在使用一个简单的javascript拆分函数来实现这一点,但是这有一些小缺点,因为youtube有多个URL。
我一直在查看其他堆栈溢出线程,但是它们都只支持 1 个特定的 URL,这不是我所需要的。
我需要与所有这些 URL 匹配的东西:
http(s)://www.youtu.be/videoID
http(s)://www.youtube.com/watch?v=videoID
(以及脚本自动检测它是否包含 youtube 视频的任何其他短 URL)
任何可以由浏览器快速/高效处理的想法将不胜感激!
试试这个:
var url = "...";
var videoid = url.match(/(?:https?:'/{2})?(?:w{3}'.)?youtu(?:be)?'.(?:com|be)(?:'/watch'?v=|'/)([^'s&]+)/);
if(videoid != null) {
console.log("video id = ",videoid[1]);
} else {
console.log("The youtube url is not valid.");
}
请参阅正则表达式:
/
(?:https?:'/{2})? // Optional protocol, if have, must be http:// or https://
(?:w{3}'.)? // Optional sub-domain, if have, must be www.
youtu(?:be)? // The domain. Match 'youtu' and optionally 'be'.
'.(?:com|be) // the domain-extension must be .com or .be
(?:'/watch'?v=|'/)([^'s&]+) //match the value of 'v' parameter in querystring from 'watch' directory OR after root directory, any non-space value.
/
也许你应该看看Youtube API,并尝试看看是否有办法通过API解析URL来获取videoID。
看看这个SO帖子:Youtube API - 提取视频 ID
这可能很快:
var url = 'http://www.youtu.be/543221';
//http://www.youtube.com/watch?v=SNfYz6Yw0W8&feature=g-all-esi would work also
var a = url.split("v=")[1];
a = a != undefined ? a : url.split("youtu.be/")[1];
b = a.split("&")[0];
变量 c 将具有您的 ID。正则表达式更好...虽然更难阅读。我已经修改了我的代码以解释两者。
种类太多了:
- 最新短格式:
http://youtu.be/NLqAF9hrVbY
- iframe:
http://www.youtube.com/embed/NLqAF9hrVbY
- iframe(安全):
https://www.youtube.com/embed/NLqAF9hrVbY
- 对象参数:
http://www.youtube.com/v/NLqAF9hrVbY?fs=1&hl=en_US
- 嵌入对象:
http://www.youtube.com/v/NLqAF9hrVbY?fs=1&hl=en_US
- 观看:
http://www.youtube.com/watch?v=NLqAF9hrVbY
- 用户:
http://www.youtube.com/user/Scobleizer#p/u/1/1p3vcRhsYGo
- 放映室:
http://www.youtube.com/ytscreeningroom?v=NRHVzbJVx8I
- 任何/事物/去!:
http://www.youtube.com/sandalsResorts#p/c/54B8C800269D7C1B/2/PPS-8DMrAn4
- 任何/子域/太:
http://gdata.youtube.com/feeds/api/videos/NLqAF9hrVbY
- 更多参数:
http://www.youtube.com/watch?v=spDj54kf-vY&feature=g-vrec
- 查询可能有点:
http://www.youtube.com/watch?v=spDj54kf-vY&feature=youtu.be
(来源:如何使用正则表达式在字符串中找到所有 YouTube 视频 ID?
最好的方法是限制输入数据。
祝你好运
试试这段代码
var url = "...";
var videoid = url.match((?:youtube(?:-nocookie)?'.com'/(?:[^'/'n's]+'/'S+'/|(?:v|e(?:mbed)?)'/|'S*?[?&]v=)|youtu'.be'/)([a-zA-Z0-9_-]{11}));
if(videoid != null) {
console.log("video id = ",videoid[1]);
} else {
console.log("The youtube url is not valid.");
}
正则表达式来自YouTube视频ID正则表达式
您可以使用preg_match轻松完成此操作,这是示例:
$url = "http://www.youtube.com/watch?v=YzOt12co4nk&feature=g-vrec";
preg_match('/v=([0-9a-zA-Z]+)/', $url, $matches);
$vid = $matches[1];
现在您将拥有视频ID为:$vid = YzOt12co4nk;
我找到了一种不使用正则表达式的简单方法。
我做了一个函数来为你做这件事:
function getLink(url){
fetch('www.youtube.com/oembed?url=' + url).then(res => {
var thumbnailUrl = res.thumbnail_url;
var id = thumbnail_url.split('vi/')[1].substring(0, 11);
return id;}
)
}
console.log(getLink(your_url));
// here replace 'your_url' with your specified youtube url.
所有这一切都是,它使用 youtube api 并将您的 url 作为参数传递,并且 youtube 会处理 url 的类型,因此您不必担心它。接下来的事情是,该函数然后从该 API 获取"thumbnail_url"数据,然后相应地拆分缩略图的 URL 以查找视频的 ID。
- 是否可以使用iframe API在iOS浏览器上播放youtube视频
- 如何用低音量自动启动Youtube视频(iframe)
- 使用HTML5播放器时使用Javascript更改Youtube视频
- 有没有办法在dailymotion播放器的新测试版中播放youtube视频
- 在Android Kitkat上模拟鼠标点击Youtube视频
- 我们如何在dailymotion播放器的新测试版中播放youtube视频
- Lightbox关闭时停止播放Youtube视频
- 放大弹出生成“;找不到文件”;YouTube视频的错误
- 如何获取youtube视频的缩略图
- 从我的频道中提取最后3个youtube视频
- 你如何在youtube.com上获得youtube视频的状态
- 尝试制作youtube视频的缩略图,并在单击时将其放大
- 如何在Android WebView中嵌入Youtube视频
- jQuery:在for循环中运行youtube视频,播放最后一个视频
- 如何使用javascript在嵌入式youtube视频上创建可点击的时间戳链接
- 如何使用javascript(或jQuery)将youtube视频添加到iframe(基于web的RTE)
- 滚动时播放youtube视频
- youtube视频的正则表达式匹配模式可以以非贪婪的方式完成吗
- 允许我在用户操作后隐藏YouTube视频吗
- 改变嵌入式YouTube视频的方面配比