当前位置: 首页 > 面试题库 >

RegEx模式可从任何YouTube URL获取YouTube视频ID

丌官盛
2023-03-14
问题内容

此PHP函数在情况1中无法正确获取ID,但在情况2中将无法获取ID。情况1非常常见,其中YouTube ID后面可能包含任何内容。

/**
 * 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 (false !== $result) {
        return $matches[1];
    }
    return false;
}

我在想的是,必须有一种方法可以查找“ v =“,无论它位于URL中的什么位置,然后再取字符。这样,就不需要复杂的RegEx。这是基地吗?对起点有什么想法吗?


问题答案:
if (preg_match('/youtube\.com\/watch\?v=([^\&\?\/]+)/', $url, $id)) {
      $values = $id[1];
    } else if (preg_match('/youtube\.com\/embed\/([^\&\?\/]+)/', $url, $id)) {
      $values = $id[1];
    } else if (preg_match('/youtube\.com\/v\/([^\&\?\/]+)/', $url, $id)) {
      $values = $id[1];
    } else if (preg_match('/youtu\.be\/([^\&\?\/]+)/', $url, $id)) {
      $values = $id[1];
    }
    else if (preg_match('/youtube\.com\/verify_age\?next_url=\/watch%3Fv%3D([^\&\?\/]+)/', $url, $id)) {
        $values = $id[1];
    } else {   
    // not an youtube video
    }

这就是我从YouTube网址中提取ID的方法。我认为它在所有情况下都有效。

请注意,最后$ values =视频的ID



 类似资料:
  • 我如何从youtube频道获取持续时间和浏览量都很重要的视频? 我试过这个请求: https://www.googleapis.com/youtube/v3/search?part=snippet, id 但响应不包含持续时间/视图计数。有什么想法吗?谢谢。

  • 问题内容: 我想从JavaScript的YouTube网址中获取(没有jQuery,纯JavaScript)。 YouTube URL格式示例 或网址中包含视频ID的任何其他YouTube格式。 这些格式的结果 问题答案: 您不需要为此使用正则表达式。

  • 我正在使用https://developers.google.com/youtube/的这些API,但是我想不出,给定一个youtube频道地址,如何获得带有相关信息的视频列表(至少是单个视频url和标题)

  • 问题内容: 如果我有YouTube视频URL,是否可以使用PHP和cURL从YouTube API获取关联的缩略图? 问题答案: 每个YouTube视频都有四个生成的图像。可以预计,它们的格式如下: 列表中的第一个是全尺寸图像,其他是缩略图图像。默认的缩略图图像(即,一个,,)为: 对于缩略图的高质量版本,请使用类似于以下内容的URL: 缩略图还有一个中等质量的版本,使用类似于HQ的URL: 对于

  • 问题内容: 有人可以告诉我如何从网址中获取youtube ID,而不管该网址中还有哪些其他GET变量。 问题答案: 使用parse_url()和parse_str()。 (您几乎可以将正则表达式用于任何东西,但它们很容易出错,因此,如果有专门针对您要完成的功能的PHP函数,请使用它们。) parse_url接受一个字符串,并将其切成具有大量信息的数组。您可以使用此数组,也可以将所需的一项指定为第二

  • https://www.googleapis.com/youtube/v3/search?part=snippet 但对于某些频道,它不获取视频,只获取播放列表。如果你转到Youtube频道并点击视频链接,它将显示所有频道的视频。在视频链接下会有一个发布的部分。示例: https://www.googleapis.com/youtube/v3/search?part=snippet 有人知道我怎么