2011-09-18 84 views
3

我想比較兩個使用PHP的網址,確保域名是相同的。它不能是子域。它必須字面上是相同的域。示例:比較兩個字符串(網址)爲相同的域

http://www.google.co.uk將驗證爲truehttp://www.google.co.uk/pages.html相比較。

http://www.google.co.uk would驗證爲false相比http://www.something.co.uk/pages.html

+0

看起來像一個正常的字符串比較任務給我。你的問題到底是什麼? –

+0

這不是我比較的字符串,但它的內容找到相同的域名 – user398341

回答

13

使用parse_url(),並將從兩次調用返回的數組中的「主機」索引與parse_url()進行比較。

+0

謝謝 - 非常棒! – user398341

+1

這有點舊,但可以通過使用parse_url的第二個參數來簡化這個過程。 'parse_url($ url,PHP_URL_HOST)'只是給你你想要的字符串。 –

+0

請注意:這不是檢查相同網域網址的一般方法,它會失效,例如在http:// www.google.co.uk和http:// mail.google.co.uk上。 – legrass

6

使用parse_url()

$url1 = parse_url("http://www.google.co.uk"); 
$url2 = parse_url("http://www.google.co.uk/pages.html"); 

if ($url1['host'] == $url2['host']){ 
    //matches 
} 
1

您可以使用parse_url

$url1 = parse_url('http://www.google.com/page1.html'); 
$domain1 = $url1['host']; 

$url2 = parse_url('http://www.google.com/page2.html'); 
$domain2 = $url2['host']; 

if($domain1 == $domain2){ 
// something 
} 
2

簡單,使用parse_url()

$url1 = parse_url('http://www.google.co.uk'); 
$url2 = parse_url('http://www.google.co.uk/pages.html'); 

if($url1['host'] == $url2['host']){ 
    // same domain 
} 
+0

,你是否複製了我的答案並更改了var名稱? – genesis

+0

大聲笑,不,我沒有,實際上我的第一個答案是''''hostname']'':) –

1

擴大阿里爾給出的答案,你可以使用代碼類似如下:

<?php 

compare_host('http://www.google.co.uk', 'http://www.something.co.uk/pages.html'); 

function compare_host($url1, $url2) 
{ 
    // PHP prior of 5.3.3 emits a warning if the URL parsing failed. 
    $info = @parse_url($url1); 
    if (empty($info)) { 
     return FALSE; 
    } 
    $host1 = $info['host']; 
    $info = @parse_url($url2); 
    if (empty($info)) { 
     return FALSE; 
    } 
    return (strtolower($host1) === strtolower($info['host'])); 
} 
+0

偉大的建議 - 謝謝! – user398341