【问题标题】:Value from a url using php [closed]使用 php 来自 url 的值 [关闭]
【发布时间】:2012-05-14 18:46:24
【问题描述】:

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

http://www.youtube.com/watch?v=N22qGmYIUVU&feature=g-logo

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

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

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

v 的值可以是任意长度

请帮忙!

【问题讨论】:

  • 你想从 URL 中获取 v 的值还是在 URL 中生成 v 的值?
  • 请使用搜索,您的问题是重复的。
  • 是的,它在某种程度上是重复的,我已经提到它是,没有一个答案是令人满意的,这就是为什么再次发布它:(
  • 是的,我想从 url 中获取 v 的值,基本上我将此 url 作为输入并识别与其关联的所有变量以实现另一种功能
  • 你不需要正则表达式。如果正则表达式对你来说很复杂,你不应该使用正则表达式。

标签: php youtube


【解决方案1】:

最简单的方法是使用 parse_url 函数。 check this link

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

print_r(parse_url('http://www.youtube.com/watch?v=N22qGmYIUVU&feature=g-logo'));

【讨论】:

    【解决方案2】:

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

    <?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
    ?>
    

    【讨论】:

    • 太棒了!!它做的比我需要的要多..非常感谢
    【解决方案3】:
    preg_match("~/watch\?v=(.*?)&~i", $uri, $matches);
    

    这应该可以解决问题。

    【讨论】:

      【解决方案4】:

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

      parse_str(parse_url("http://www.youtube.com/watch?v=N22qGmYIUVU&feature=g-logo")["query"],$arr);
      echo $arr["v"];
      

      【讨论】:

        猜你喜欢
        • 2016-12-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多