【问题标题】:Grab YouTube ID and additional variables for embedding purposes with JavaScript使用 JavaScript 获取 YouTube ID 和其他变量以用于嵌入目的
【发布时间】:2012-03-25 18:55:03
【问题描述】:

因此,我看到了很多使用 JavaScript 从 URL 中获取 YouTube ID 的脚本,但我找不到或不知道如何获取 ID 以及任何其他变量。我有一个 PHP 脚本可以做到这一点,但我想用 JavaScript 做到这一点。有谁知道如何做到这一点?

我怀疑这是必要的,但这是我正在使用的两个脚本

用于视频 ID 的 JavaScript...

url = $(this).text();
var regExp = /^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=)([^#\&\?]*).*/;
var match = url.match(regExp);
if (match&&match[2].length==11){
    alert(match[2]);
}else{
   alert("not youtube");
}

还有 PHP...

if (preg_match('%(?:youtube\.com/(?:[^/]+/.+/|(?:v|e(?:mbed)?)/|.*[?&]v=)|youtu\.be/)([^"&?/ ]{11})%i', $url, $match)) {
$youtubeid = $match[1];
$getyt = (parse_url($url));
}
if(strlen($getyt['fragment']) > 0) {
$addhash = '#' . $getyt['fragment'];
}
$embed = "http://www.youtube.com/embed/$youtubeid?wmode=opaque&autoplay=1$addhash";

PHP 非常好,只是它只适用于哈希标签。我想要其他变量的主要原因是有人想要指定开始时间。因此,如果有人能告诉我如何获取 URL 和其他参数(或者只是视频的指定开始时间),我将非常感激,因为我完全迷路了。

【问题讨论】:

  • stackoverflow.com/questions/9552883/… - 他有一些代码,你可能需要修改一下
  • 那只能从视频中获取 ID,我已经知道该怎么做。这是我遇到麻烦的其他参数。不过谢谢。
  • 正则表达式是关于模式匹配的,但是你没有给我们任何匹配的东西!该附加参数应如何显示?它的工作方式与您用于获取视频 ID 的方式完全相同。搜索参数并将相应的值放入捕获组。

标签: javascript regex parsing url youtube


【解决方案1】:

这将创建一个名为 video_parameters 的关联数组:

function extractParameters(url)
{
    var query = url.match(/.*\?(.*)/)[1];
    var assignments = query.split("&")
    var pair, parameters = {};
    for (var ii = 0; ii < assignments.length; ii++)
    { 
        pair = assignments[ii].split("=");
        parameters[pair[0]] = pair[1];
    }
    return parameters;
}

url = "http://www.youtube.com/watch?v=gkU&list=UUa3Q&feature=plcp";
video_parameters = extractParameters(url);

// video_parameters["v"]
// > "gkU"
// video_parameters["list"]
// > "UUa3Q"

有关处理特殊字符的方法,请参阅 How can I get query string values in JavaScript?

【讨论】:

  • 谢谢,正是我需要的。
猜你喜欢
  • 1970-01-01
  • 2013-07-14
  • 2019-02-14
  • 2012-06-23
  • 2015-01-24
  • 2019-02-20
  • 2017-10-03
  • 1970-01-01
  • 2010-09-21
相关资源
最近更新 更多