【问题标题】:PHP - Best way to find URL root from string?PHP - 从字符串中查找 URL 根的最佳方法?
【发布时间】:2012-08-09 08:07:21
【问题描述】:

我使用 PHP。

我有一个如下所示的网址

http://www.mydomain.com/mydir/mydir2/?something=hello

我想要这个:

http://www.mydomain.com

我是这样做的,但感觉方法不对

又长又丑。

$url = 'http://www.mydomain.com/mydir/mydir2/?something=hello';
$root_url_a = explode('/', $url);
$root_url = $root_url_a[0] . '//' .  $root_url_a[2];
$root_url_clean = $root_url_a[2];

建议

  • 正则表达式?
  • Xpath?
  • 一些对我来说未知的 PHP 函数?

最短最正确的做法会得到我的投票。

【问题讨论】:

  • XPath?从什么时候开始一个 url 是一个 xml 文档?
  • 有人对整个线程投了反对票——我赞成你的问题,这不是一个无效的问题。

标签: php regex url xpath


【解决方案1】:

好的,这是一个例子:

$url = parse_url('http://www.mydomain.com/mydir/mydir2/?something=hello');

echo $url->scheme.'://'.$url->host;

沿着正确的路线。

虽然从技术上讲,这甚至是不正确的,因为取决于您是否为 url parse_url 发送方案实际上可以改变它分配变量的方式,所以我写道:

function return_url($url){
    $parsed_url = parse_url($url);

    if(!$parsed_url){
        return false;
    }

    if(isset($parsed_url['scheme'])){
        if(!isset($parsed_url['host'])){
            return false;
        }else{
            return $parsed_url['scheme'].'://'.$parsed_url['host'];
        }
    }

    if(isset($parsed_url['path'])){
        return 'http://'.$parsed_url['path'];
    }
    return false;
}

【讨论】:

    【解决方案2】:

    我会这样做:

    $url = "http://www.mydomain.com/mydir/mydir2/?something=hello";
    echo parse_url($url, PHP_URL_HOST);
    
    // Would echo:
    http://www.mydomain.com
    

    【讨论】:

    • 为什么我被否决了?这是解析 url 的一种完全合法的方式吗?如果此代码有任何问题 - 请提出建议。
    • 我不是反对者,但这不会像你所说的那样做,因为 PHP_URL_HOST 部分不包括该方案,所以你得到的只是www.mydomain.com
    【解决方案3】:

    我会说 RTM ;)

    http://php.net/manual/en/function.parse-url.php

    <?php
    $url = 'http://username:password@hostname/path?arg=value#anchor';
    
    print_r(parse_url($url));
    
    echo parse_url($url, PHP_URL_HOST);
    ?>
    

    【讨论】:

    • 请考虑测试您的代码,或确保在发布答案之前阅读正确的问题。不要直接从 PHP.net 复制粘贴。他不是在寻找路径,而是在寻找url的主机。
    • 您可以为此添加评论,以添加对问题的答案,告诉他们阅读手册然后发布您显然没有测试的误导性代码对任何人都没有帮助。
    • 这仍然不会返回他正在寻找的内容
    • 我认为他可以自己解决这个问题。
    猜你喜欢
    • 1970-01-01
    • 2012-04-24
    • 1970-01-01
    • 1970-01-01
    • 2014-06-23
    • 1970-01-01
    • 2011-05-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多