2012-08-09 63 views
2

我使用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

回答

2

我會做像這樣:

$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

-4

我要說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

3

確定這裏是一個例子:

$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

相關問題