2011-09-18 83 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