【问题标题】:REAL domain detecting php真实域名检测php
【发布时间】:2014-08-17 06:31:08
【问题描述】:

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

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

【问题讨论】:

  • 请简要说明你想做什么

标签: php dns subdomain


【解决方案1】:

试试类似的东西,它会从下面的例子中返回子

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

【讨论】:

  • 我需要获取主域。从你的代码我可以得到第一部分,所以如果域example.com.ua 我会得到example,但它是一个主域,而不是子域。
  • 尝试Print_r($host),你会得到数组Array下面的元素([0] => sub [1] => example [2] => com [3] => ua)
  • 是的。但是如果$url='http://example.com.ua',数组([0] => example [1] => com [2] => ua)。但是example不是子域,是主要的三级域。
  • 您可以编写逻辑,即如果数组计数为 4 意味着您必须连接字符串最后 3 项,如果是 3 则连接最后 2 项,如果 2 计数则连接最后两项
  • 数组可以是 4、5、6 等 :) 我找到了解决方案。
【解决方案2】:

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

 <?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";
    }
    ?>

希望对你有帮助

【讨论】:

    【解决方案3】:
    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。 这是真实的域名。

    【讨论】:

      猜你喜欢
      • 2011-07-22
      • 2021-05-25
      • 2019-09-18
      • 1970-01-01
      • 2017-07-16
      • 2013-10-02
      • 1970-01-01
      • 2013-10-25
      • 2013-10-13
      相关资源
      最近更新 更多