Na verdade, não existe uma solução 100% dinâmica - também estou tentando descobrir isso e, devido às diferentes extensões de domínio (DTL), essa tarefa seria realmente difícil sem realmente analisar todas essas extensões e verificá-las a cada vez:
.com vs .co.uk vs org.uk
A opção mais confiável é definir uma constante (ou entrada de banco de dados etc.) que armazena o nome de domínio real e removê-lo do $_SERVER['SERVER_NAME']
usosubstr()
defined("DOMAIN")
|| define("DOMAIN", 'mymaindomain.co.uk');
function getSubDomain() {
if (empty($_SERVER['SERVER_NAME'])) {
return null;
}
$subDomain = substr($_SERVER['SERVER_NAME'], 0, -(strlen(DOMAIN)));
if (empty($subDomain)) {
return null;
}
return rtrim($subDomain, '.');
}
Agora, se você estiver usando esta função com o http://test.mymaindomain.co.uk
que lhe dará test
ou se você tem vários níveis de sub-domínio http://another.test.mymaindomain.co.uk
você vai ter another.test
- a menos que você atualizar o DOMAIN
.
Eu espero que isso ajude.