php - 使用 preg_match 解析 youtube 视频 ID

标签 php regex parsing youtube

我正在尝试使用 preg_match 解析 youtube URL 的视频 ID。我在这个网站上发现了一个似乎有效的正则表达式;

(?<=v=)[a-zA-Z0-9-]+(?=&)|(?<=[0-9]/)[^&\n]+|(?<=v=)[^&\n]+

如图所示:

alt text

我的PHP如下,但是不起作用(给出未知修饰符'['错误)...

<?
 $subject = "http://www.youtube.com/watch?v=z_AbfPXTKms&NR=1";

 preg_match("(?<=v=)[a-zA-Z0-9-]+(?=&)|(?<=[0-9]/)[^&\n]+|(?<=v=)[^&\n]+", $subject, $matches);

 print "<pre>";
 print_r($matches);
 print "</pre>";

?>

干杯

最佳答案

这个正则表达式从我能找到的所有各种 URL 中获取 ID... 那里可能还有更多,但我在任何地方都找不到它们的引用。如果你遇到一个不匹配的,请在 URL 中留下评论,我会尝试更新正则表达式以匹配你的 URL。

if (preg_match('%(?:youtube(?:-nocookie)?\.com/(?:[^/]+/.+/|(?:v|e(?:mbed)?)/|.*[?&]v=)|youtu\.be/)([^"&?/\s]{11})%i', $url, $match)) {
    $video_id = $match[1];
}

以下是此正则表达式匹配的 URL 示例:(在给定 URL 之后可以有更多内容将被忽略)

它也适用于具有上述相同选项的 youtube-nocookie.com URL。

它还会在嵌入代码(iframe 和对象标签)中从 URL 中提取 ID

关于php - 使用 preg_match 解析 youtube 视频 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2936467/

相关文章:

php - 我的 iPhone 游戏的高分系统

php - 从post到php获取多个变量

php - MySQL:SELECT * INTO OUTFILE 始终返回空数组且没有错误代码?

php - 如何在 PHP 中取消设置 session 数组

regex - 我们可以将值的正则表达式放入 DTD 中吗?

Python:使用正则表达式或其他方式提取 URL

java - 在带有量词的 Java 正则表达式中,如何获得匹配的组?

java解析字符串到日期

json - Swift:解析 JSON 时无法将 NSCFString 转换为 NSNumber

c# - 解析 C# 代码(作为字符串)并插入其他方法