如何使用PHP Regex 获取 YouTube 视频 ID?
YouTube ID 是一个 11 个字符的字符串,由大小写字母和数值组成。它用于唯一定义 YouTube 视频。任何 YouTube 视频的链接都包含查询格式的 YouTube ID,其变量通常写为 'v' 或 'vi' 或可以表示为 'youtu.be/' 。
来自以下链接的 YouTube ID 示例:
- https://youtu.be/hjGD08xfg9c
- https://www.youtube.com/watch?v=hjGD08xfg9c
- https://www.youtube.com/watch?vi=hjGD08xfg9c
- https://www.youtube.com/?v=hjGD08xfg9c
- https://www.youtube.com/?vi=hjGD08xfg9c
在所有这些网址中,字符串“hjGD08xfg9c”是 YouTube ID。现在利用这些知识,可以构建一个正则表达式来从PHP的给定链接获取 YouTube ID。
正则表达式:现在我们知道可以通过五种基本格式获取 YouTube ID,即通过 v= 或 vi= 或 v/ 或 vi/ 或 youtu.be/。因此,当查询从 '?' 开始时或 'yout.be/',以 '?' 开始正则表达式或寻找“yout.be/”。它将忽略 '?' 之前的 URL 部分或“yout.be/”。之后搜索 'v=' 或 'vi=' 并存储接下来的 11 个字符并打印它。
根据这个逻辑,正则表达式将是
preg_match_all("#(?<=v=|v\/|vi=|vi\/|youtu.be\/)[a-zA-Z0-9_-]{11}#", $url, $match);
示例:此示例将显示 YouTube ID,其中输入将是指向 YouTube 的链接。
Array
(
[0] => hjGD08xfg9c
[1] => hjGD08xfg9c
[2] => hjGD08xfg9c
[3] => hjGD08xfg9c
[4] => hjGD08xfg9c
)
替代方案:我们可以使用 parse_str() 和 parse_url() 这两个函数来访问变量或查询,而不是使用正则表达式。 parse_str() 将 parse_url() 和一个输出变量作为参数,并将 url 的所有查询值放入输出变量中。 parse_url() 接受字符串格式的 url 和一个整数值,并根据传递的整数值返回 url 中不同属性的列表。
例子:
hjGD08xfg9c
hjGD08xfg9c