BcUtil::getSubDomain PHP 메소드

getSubDomain() 공개 정적인 메소드

サブドメインを取得する
public static getSubDomain ( $host = null ) : string
리턴 string
    public static function getSubDomain($host = null)
    {
        if (isConsole() && empty($_SERVER['HTTP_HOST']) && !$host) {
            return '';
        }
        if (!$host) {
            $host = $_SERVER['HTTP_HOST'];
        }
        if (strpos($host, '.') === false) {
            return '';
        }
        $mainHost = BcUtil::getMainFullDomain();
        if ($host == $mainHost) {
            return '';
        }
        if (strpos($host, $mainHost) === false) {
            return '';
        }
        $subDomain = str_replace($mainHost, '', $host);
        if ($subDomain) {
            return preg_replace('/\\.$/', '', $subDomain);
        }
        return '';
    }

Usage Example

예제 #1
0
 /**
  * URLからサブサイトを取得する
  *
  * @param bool $direct
  * @return BcSite|null
  */
 public static function findCurrent($direct = true)
 {
     $request = Router::getRequest(true);
     if (!$request) {
         $request = new CakeRequest();
     }
     $url = $request->url;
     $sites = self::findAll();
     if (!$sites) {
         return null;
     }
     $url = preg_replace('/^\\//', '', $url);
     $currentSite = null;
     foreach ($sites as $site) {
         if ($site->alias) {
             $domainKey = '';
             if ($site->useSubDomain) {
                 if ($site->domainType == 1) {
                     $domainKey = BcUtil::getSubDomain() . '/';
                 } elseif ($site->domainType == 2) {
                     $domainKey = BcUtil::getFullDomain() . '/';
                 }
             }
             $regex = '/^' . preg_quote($site->alias, '/') . '\\//';
             if (preg_match($regex, $domainKey . $url)) {
                 $currentSite = $site;
                 break;
             }
         }
     }
     if (!$currentSite) {
         $currentSite = $sites[0];
     }
     if (!$direct) {
         $subSite = self::findCurrentSub(true);
         if ($subSite) {
             $currentSite = $subSite;
         }
     }
     return $currentSite;
 }