PHP - 从字符串中查找URL根目录的最佳方法?

时间:2012-08-09 08:07:22

标签: php regex url xpath

我使用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功能?

最短的最正确的方式将得到我的投票。

3 个答案:

答案 0 :(得分:3)

好的,这是一个例子:

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

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

沿着正确的路线。

虽然从技术上来说这甚至都不对,因为取决于你是否发送了一个方案而不是网址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;
}

答案 1 :(得分:2)

我会这样做:

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

// Would echo:
http://www.mydomain.com

答案 2 :(得分:-4)

我会说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);
?>