2012-08-06 79 views
1

如果我有一個包含URL的變量,那麼我如何獲取基本URL?也就是,如何使用PHP從長url中獲取基本名稱?

$url = 'http://www.domain.com/some/stuff/that/I/do/not/want/'; 
$base_url = some_clever_function($url); 
// $base_url is now set equal to 'domain.com' 

我該怎麼做?

+2

見['parse_url()'](http://php.net/parse_url) – drew010 2012-08-06 19:08:10

+0

可能重複[從PHP中解析域URL](http://stackoverflow.com/questions/276516/parsing-domain-from-url-in-php) – nickb 2012-08-06 19:09:30

回答

11

parse_url將能夠爲您提取主機。

它有第二個參數,可以幫助您提取URL的不同部分。爲了提取主機上,使用parse_url以下方式:

$host = parse_url($url, PHP_URL_HOST); 
-3
$url = 'http://google.com/dhasjkdas/sadsdds/sdda/sdads.html'; 
$parse = parse_url($url); 
print $parse['host']; // prints 'google.com' 

第二方法

<?php 
// get host name from URL 
preg_match("/^(http:\/\/)?([^\/]+)/i", 
    "http://www.php.net/index.html", $matches); 
$host = $matches[2]; 

// get last two segments of host name 
preg_match("/[^\.\/]+\.[^\.\/]+$/", $host, $matches); 
echo "domain name is: {$matches[0]}\n"; 

/* Output is php.net */ 


?> 
+0

協議?其他頂級域名? Downvote。 – madfriend 2012-08-06 19:11:06

+1

如果您要公然複製代碼,您至少應該對[原作者(例如#3)](http://php.net/preg_match)給予評價。 – nickb 2012-08-06 19:13:31

+0

https?第二個例子再次缺少可選協議 – madfriend 2012-08-06 19:14:26