2014-01-26 50 views
2

我知道我可以在php中用parse_url解析完整的url,但是我的問題是當我沒有完整的url ormat時,我如何獲取域名。只在未完整路徑中獲取域名

我的網址是2 condtion有時完整路徑,有時不完整路徑,

爲例
blahblah.com/ddddd/fffff/a.php?ddddd
http://blahblah.com/ddddd/fffff/a.php?ddddd

我想這回我blahbla.com

我的網址不是瀏覽器網址,請把它們當作變量不當前的網址

+0

即使協議丟失,parse_url也可以正常工作。 –

回答

0

取巧的辦法:)

$url_p= parse_url($url); 

    if(!isset($url_p['scheme'])){ 
     $url='http://'.$url; 
     $url_p=parse_url($url); 
    } 
echo $url_p['host']; 
1

實現這一正確的方法是通過利用$_SERVER['HTTP_HOST'];

+0

對不起我忘了'.com',我更新了問題:( – zhilevan

+0

@zhilevan,更新了答案。 –

1

試試這個

echo $_SERVER['SERVER_NAME']; 
0

使用

echo $_SERVER['SERVER_NAME']; 

或刪除的 'www。'使用

echo str_replace('www.', '', $_SERVER['SERVER_NAME']); 
0

試試這個,

$url='blahblah.com/ddddd/fffff/a.php?ddddd'; 
$Urls = parse_url($url);   
if(!isset($Urls['host'])){   
    $url = 'http://'.$url; 
    $Urls = parse_url($url); 
}  
echo $Urls['host']; 
+0

如果不包含'http' ??? – zhilevan

+0

已更新的答案。請檢查! –

0

它會使用parse_url() 但是在您的特定情況下,你需要做的最好的和官方的方法絕招:

$url = 'http://'.preg_replace('!^https?://!i', '', $url); 
  1. 首先,您有意確保在開頭沒有http://或https://。
  2. 然後添加你自己的http://開頭
  3. 現在這個$網址是終於爲parse_url()資格:

echo parse_url($url, PHP_URL_HOST);

0

試試這個,

$uri = $_SERVER['REQUEST_URI']; // $uri == example.com/index 
    $exploded_uri = explode('/', $uri); //$exploded_uri ==  array('example.com','index') 
    $domain_name = $exploded_uri[0]; //$domain_name = 'example.com' 
+0

請避免提供塊引用答案,您應該解釋你的代碼的作用以及它如何解決問題。 – Jordan