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

问题描述:

我使用PHP。PHP - 从字符串中找到URL根的最佳方法?

我有一个看起来像这样

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

的URL我想这样:

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

这样做的最短最正确的方法将得到我的投票。

+4

http://php.net/manual/en/function.parse-url.php – 2012-08-09 08:08:36

+4

'XPath'?由于什么时候是一个URL一个XML文件? – EaterOfCode 2012-08-09 08:12:20

+0

为什么投下这个问题呢? – 2012-08-09 08:32:07

我会做像这样:

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

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

为什么我得到downvoted?这是解析url的完全合法的方式?如果此代码有任何问题 - 请咨询。 – Marcus 2012-08-09 08:31:52

+0

我不是downvoter,但这不会做你声称的,因为PHP_URL_HOST部分不包括该计划,所以你会得到的所有'www.mydomain.com' – 2012-08-09 11:13:59

我要说RTM)

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

<?php 
$url = 'http://username:[email protected]/path?arg=value#anchor'; 

print_r(parse_url($url)); 

echo parse_url($url, PHP_URL_HOST); 
?> 
+3

这不会工作,路径不是他正在寻找 – Sammaye 2012-08-09 08:12:31

+1

请考虑测试您的代码,或确保您在发布答案之前阅读正确的问题。不直接从PHP.net复制粘贴。他不是在寻找路径,而是寻找url的主机。 – Marcus 2012-08-09 08:21:23

+0

现在请恢复我的投票。 Pfff。 – 2012-08-09 08:23:39

确定这里是一个例子:

$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; 
} 
+0

Downvoter,谨慎解释? – Sammaye 2012-08-09 08:29:33

+0

复仇downvoting可能 – 2012-08-09 08:33:06