REAL域检测php

时间:2014-08-17 06:31:08

标签: php dns subdomain

我需要检测真实的域名,没有子域名。

example.com
example.com.ua
sub.example.com.ua
sub.example.com

com.ua - 第三级域名。 对于com.ua域,我的结果必须为example.com.ua, 对于其他人 - example.com

现在我的代码看起来像

$domain = parse_url($domain, PHP_URL_HOST);
$domain = implode('.', array_slice(explode('.', $domain), -2));

但它无法识别子域名和第三级域名。对于com.ua域名,请返回com.ua

3 个答案:

答案 0 :(得分:0)

我没有完全理解你在说什么,但我认为你想要检测当前域是否是子域。为此目的,请使用下面的代码

 <?php
    $sub ="sub";
    $a=explode(".",$_SERVER['HTTP_HOST']);
    $check = array_shift($a);
    if($check==$sub)
    {
    echo "this is a subdomain"."<br>";
    foreach($a as $test)
{
$main_domain.=$test;
}
echo "The main domain is:".$main_domain;
    }

    else
    {
    echo "This is not a sub domain";
    }
    ?>

希望这有助于你

答案 1 :(得分:0)

尝试类似的东西,它将从示例

返回sub
$url = 'http://sub.example.com.ua';
$parsedUrl = parse_url($url);
$host = explode('.', $parsedUrl['host']);
$subdomain = $host[0];
echo $subdomain;

答案 2 :(得分:-1)

function domain($domain) 
{ 
    $parts = explode('.', $domain); 
    $idz = count($parts); 
    $idz -= 3; 

    if(strlen($parts[($idz+2)]) == 2)
    { 
        $domain = $parts[$idz].'.'.$parts[($idz+1)].'.'.$parts[($idz+2)]; 
    } 
    else if(strlen($parts[($idz+2)]) == 0)
    { 
        $domain = $parts[($idz)].'.'.$parts[($idz+1)]; 
    } 
    else 
    { 
        $domain = $parts[($idz+1)].'.'.$parts[($idz+2)]; 
    }

    return $domain; 
} 

$domain = 'sub1.sub2.sub3.example.com.ua';
echo domain($domain);

返回:example.com.ua。 它是REAL域名。