php - 如何更正使 YouTube ID 与短 URL 一起使用的代码
问题描述
我有一个允许从 YouTube 抓取视频的脚本。但是,如果我使用短 URL,它就不起作用。
我认为问题是由从 URL 获取 YouTube Id 的代码引起的。以下是我认为对此负责的几行:
$youtube_url = $_POST['file'];
$ParseUrl = parse_url($youtube_url);
parse_str($ParseUrl['query'], $youtube_url_prop);
$YouTubeId = isset($youtube_url_prop['v']) ? $youtube_url_prop['v'] : '';
我是新手,所以首先我想确保这是我应该关注的代码。
如果是这样,我希望有人可以建议我如何更改这些行以从短 URL 中获取 YouTube Id。
干杯。
解决方案
这个函数将为您提供两种 url 格式的视频 ID:
<?php
function extractVideoId($url) {
$re = '/(youtu\.be\/|youtube\.com\/(watch\?(.*&)?v=|(embed|v)\/))([^\?&"\'>]+)/';
preg_match($re, $url, $matches, PREG_OFFSET_CAPTURE, 0);
if(!isset($matches[5])) {
return null;
}
return $matches[5][0];
}
$fullUrl ="https://www.youtube.com/watch?v=dQw4w9WgXcQ";
$shortUrl ="https://youtu.be/dQw4w9WgXcQ";
var_dump(extractVideoId($fullUrl));
var_dump(extractVideoId($shortUrl));
输出 :
string(11) "dQw4w9WgXcQ"
string(11) "dQw4w9WgXcQ"
推荐阅读
- javascript - 在使用网络图时,为什么要用两种不同的颜色为公共节点着色。?
- assembly - MIPS排序代码打印数组的问题
- reactjs - 如何从两个不同的 API 获取和显示数据
- react-native - 从另一个组件触发 onPress 函数
- ansible - Ansible 无法复制远程服务器上的文件,但是如果从命令行运行,该命令可以正确运行
- javascript - Parallax.js 在桌面和 ios 设备上显示预期行为,但在 android 设备上不起作用
- python - requirements.txt 文件,包括更具体的信息
- python - 为什么我需要深拷贝?
- python - 如何在 openpyxl 中编辑折线图上的轴位置?
- powerbi - 如何在 PowerQuery M 中的两个日期之间获取每个月的时间