Как получить первый субдомен с PHP?

У меня есть статический домен dev.example.com с поддоменами подстановочных символов, например *.dev.example.com .

Мне нужно определить имя текущего поддомена подстановочных знаков. Итак, если я просматриваю sub.dev.example.com как мне получить «sub»?

 $env_domain = dev.example.com; $subdomain = array_shift( explode( '.', $_SERVER['HTTP_HOST'] ) ) .'.'. $env_domain; echo $subdomain; 

В настоящее время это возвращает dev . Мне нужно, чтобы он возвращал sub .

Я думаю, что наилучшей практикой здесь было бы вернуть самый низкоуровневый домен (первый подобъект).

Обратите внимание, что я не разбираю URL-адрес, а заданный домен.

 $domain = 'sub.dev.example.com'; $tmp = explode('.', $domain); $subdomain = current($tmp); print($subdomain); // prints "sub" 

Это еще одно простое решение вопроса.

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

Я думаю, что использование функции parse_url намного лучше подходит:

 getUrlSubdomain($url){ $urlSegments = parse_url($url); $urlHostSegments = explode('.', $urlSegments['host']); if(count($urlHostSegments) > 2) { return $urlHostSegments[0]; } else{ return null; } } 

Вот небольшая функция, которая сделает трюк. Просто вставьте $ _SERVER ['HTTP_HOST'] в функцию, и вы должны получить то, что хотите

 function getSubDomain ($domain) { $eDom = explode('.', $domain); return $eDom[0]; } echo getSubDomain('sub.dev.example.com'); // echo 'sub' 

Из PHP 5.3 вы можете использовать strstr () с истинным параметром

 echo strstr('sub.dev.example.com', '.', true); //prints sub 

Оригинальная ссылка