-5

我想从 url 中提取一个值,例如 url 是

http://www.youtube.com/watchv=N22qGmYIUVU &feature=g-logo

我需要使用 php 从 url 中获取 v 的值。我知道它需要使用正则表达式来完成,但我不太擅长,我检查了其他相关问题,但我发现他们解决的方式存在问题。

例如这个正则表达式 - /http\://www.youtube.com/watch\?v=([\w-]{11})/

将 v 的值限制为 11 我不希望这样,基本上如果它遇到“#”或“&”或任何分隔符,则应终止并提取 v 的值。

v 的值可以是任意长度

请帮忙!

4

4 回答 4

1

最简单的方法是使用 parse_url 函数。 检查这个链接

然后使用http://www.php.net/manual/en/function.parse-str.php

print_r(parse_url('http://www.youtube.com/watch?v=N22qGmYIUVU&feature=g-logo'));
于 2012-05-05T13:09:15.280 回答
0
preg_match("~/watch\?v=(.*?)&~i", $uri, $matches);

这应该可以解决问题。

于 2012-05-05T13:07:26.790 回答
0

这是一种比使用正则表达式更简单的方法。

<?php
    $url = "http://www.youtube.com/watch?v=N22qGmYIUVU&feature=g-logo";

    $parts = parse_url($url);
    parse_str($parts['query'], $query);

    print_r($query); // $query['v'] is what you want
?>
于 2012-05-05T13:10:07.760 回答
0

使用 PHP 5.4,您可以使用数组解引用:

parse_str(parse_url("http://www.youtube.com/watch?v=N22qGmYIUVU&feature=g-logo")["query"],$arr);
echo $arr["v"];
于 2012-05-05T13:26:17.533 回答