1

我有一个 javascript 脚本,其中有行,一个例子是:

http://www.youtube.com/watch?v=FOeLP1WdjFc&feature=related

我想提取“watch?=”之后和“&feature”之前的子字符串,它的模式是:

1)它在“手表?=”之后

2) 它在“&feature”之前,

3) 它是一个 11 个字符的字符串

我知道其他脚本可能很简单,但现在我只需要javascript,如果真的不可能,那么php是可以接受的,如何实现呢?谢谢!

4

4 回答 4

2

试试这个(工作示例):

var s = "http://www.youtube.com/watch?v=FOeLP1WdjFc&feature=related";

var left = "watch?v=";
var right = "&feature";

var parsed = s.substring(s.indexOf(left) + left.length, s.indexOf(right));

console.log(parsed);​

这是一个非常粗略、快速的答案,因此我建议您研究正则表达式以获得更具可扩展性的方法。

于 2012-11-07T14:06:42.773 回答
2

您可以使用正则表达式来制定您的要求:

var res = url.match(/watch?=(.{11})&feature/);
if (res != null)
    return res[1];

并不是说这会起作用(提取v参数的内容),但它会按照您的描述进行。

于 2012-11-07T14:07:15.320 回答
1

.indexOf()你可以使用 JavaScript和.substring()方法来实现你所需要的。

var index = url.indexOf('?v=') + 3;
alert(url.substring(index, index + 11));

请参阅此演示

于 2012-11-07T14:07:28.140 回答
1

在 PHP 中,您可以使用标准函数parse_url()来解析 URL 并parse_str()解析查询字符串以提取单个 GET 参数,例如v.

于 2012-11-07T14:08:26.010 回答