【问题标题】:PHP Get Subdomain But Not Actual DomainPHP获取子域但不是实际域
【发布时间】:2013-08-05 13:32:42
【问题描述】:

我目前正在使用以下内容来获取我网站的子域

$subdomain = array_shift(explode(".",$_SERVER['HTTP_HOST'])); 

当我将它用于http://www.website.com 时,它会返回预期的“www”

但是,当我将其与 http://website.com 一起使用时,它会返回“网站”作为子域。我怎样才能绝对确定如果没有像该示例中那样的子域,它返回 NULL?

谢谢!

【问题讨论】:

标签: php subdomain


【解决方案1】:

请注意,在通常情况下,您应该首先将 parse_url 应用于传入数据 - 然后使用其中的 [host] 键。至于您的问题,您可以使用以下内容:

preg_match('/([^\.]+)\.[^\.]+\.[^\.]+$/', 'www.domain.com', $rgMatches);
//2-nd level check:
//preg_match('/([^\.]+)\.[^\.]+\.[^\.]+$/', 'domain.com', $rgMatches);
$sDomain = count($rgMatches)?$rgMatches[1]:null;

但我不确定它是否正是您所需要的(因为 url 可以包含第 4 个域级别等)

【讨论】:

    【解决方案2】:

    这样做:

    function getSubdomain($domain) {
        $expl = explode(".", $domain, -2);
        $sub = "";
        if(count($expl) > 0) {
            foreach($expl as $key => $value) {
                $sub = $sub.".".$value;
    
            }
            $sub = substr($sub, 1);
        }
        return $sub;
    }
    $subdomain = getSubdomain($_SERVER['HTTP_HOST']);
    

    对我来说很好用。基本上你需要使用爆炸限制参数。
    详情及来源:phph.net - explode manual

    【讨论】:

      【解决方案3】:

      如果您有其他域,例如 .net.org 等,只需相应地更改值

      $site['uri'] = explode(".", str_replace('.com', '', $_SERVER['HTTP_HOST']) );
      if( count($site['uri']) >0 ) {
          $site['subdomain'] = $site['uri'][0];
          $site['domain'] = $site['uri'][1];
          }
      else  { 
          $site['subdomain'] = null;
          $site['domain'] = $site['uri'][0];
      }
      //For testing only:
      print_r($site);
      

      ...或不(以获得更大的灵活性):

      $site['uri'] = explode(".", $_SERVER['HTTP_HOST'] );
      if( count($site['uri']) > 2 ) {
          $site['subdomain'] = $site['uri'][0];
          $site['domain'] = $site['uri'][1];
          }
      else  { 
          $site['subdomain'] = null;
          $site['domain'] = $site['uri'][0];
      }
      //For testing only:
      print_r($site);
      

      【讨论】:

        猜你喜欢
        • 2011-02-10
        • 2010-11-27
        • 1970-01-01
        • 1970-01-01
        • 2011-11-15
        • 2023-02-02
        • 1970-01-01
        • 2012-08-28
        相关资源
        最近更新 更多