【问题标题】:Change url-string更改 url 字符串
【发布时间】:2009-09-01 11:43:29
【问题描述】:

我希望用 php 将此网址 http://www.youtube.com/watch?v=dgNgODPIO0w&feature=rec-HM-fresh+div 转换为:http://www.youtube.com/v/dgNgODPIO0w

【问题讨论】:

    标签: php url string


    【解决方案1】:

    我会使用parse_urlparse_str 的组合:

    $url = 'http://www.youtube.com/watch?v=dgNgODPIO0w&feature=rec-HM-fresh+div';
    $parts = parse_url($url);
    parse_str($parts['query'], $params);
    $url = 'http://www.youtube.com/v/'.$params['v'];
    

    或者一个简单的正则表达式:

    preg_match('/^'.preg_quote('http://www.youtube.com/watch?', '/').'(?:[^&]*&)*?v=([^&]+)/', $url, $match);
    $url = 'http://www.youtube.com/v/'.$match[1];
    

    【讨论】:

    • 您知道您可以在正则表达式中使用不同的字符而不是 / 作为分隔符,对吧?无论您的字符串的第一个字符是什么,都将被视为分隔符,因此您可以使用 # 或 @ 或 ~ 代替 /(以防止必须在 url 本身中转义反斜杠)。
    • @Dav:是的,我知道。但是你知道.是一个元字符,代表任意字符吗?
    【解决方案2】:
    $url = 'http://www.youtube.com/watch?v=dgNgODPIO0w&feature=rec-HM-fresh+div';
    $url = preg_replace('@http://www.youtube.com/watch\?v=([^&;]+).*?@', 'http://www.youtube.com/v/$1', $url);
    

    【讨论】:

      【解决方案3】:
      $url = 'http://www.youtube.com/watch?v=dgNgODPIO0w&feature=rec-HM-fresh+div';
      
      preg_match('~(http://www\.youtube\.com/watch\?v=.+?)&.*?~i', $url, $matches);
      
      echo $matches[1];
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-04-18
        • 2012-03-28
        • 2015-01-18
        • 2020-08-22
        • 2016-10-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多