Ottieni sottodominio dall'URL?

Ho bisogno di get qualche valore dall'URL ..
Come se l'URL fosse http://www.random.mysite.com/

Quindi in qualche modo voglio essere random .

Ma dovrebbe funzionare anche se utilizza www , http:// o https:// davanti http:// .

Quindi, come può essere fatto?

Ho provato questo: arrays_shift(explode(".",$_SERVER['HTTP_HOST']));

Funziona se l'url è http://random.mysite.com/ , ma se metto www in-front, poi mi viene restituito www ?

Qualche idea?

Puoi provare

 $url = 'http://random.mysite.com/'; $url = parse_url($url,PHP_URL_HOST); $url = strstr(str_replace("www.","",$url), ".",true); var_dump($url); 

Gli URL senza http [s]: // in primo piano non sono URL. Sono archi.

 $hostname = preg_replace('~^https?://(www\\.)?~i', null, $url); // shift scheme and www $hostname = preg_replace('~#.*$~', null, $hostname); // pop target $hostname = preg_replace('~\\?.*$~', null, $hostname); // pop query string $hostname = preg_replace('~/.*$~', null, $hostname); // pop uri // no guarantee it's a valid hostname, there's more checks you can do here 

Prova questo. Perché tre passi? Per essere espliciti in modo da capire cosa fa e per far fronte a casi complicati quando non si ha / e un? direttamente. Anche l'ordine è importnte. Potrebbe essere combinato in un colpo solo, ma è necessario qualche test per farlo bene … Ci sono così tanti URL malformati là fuori quando si raschia un po '.

Puoi usare parse_url per get tutto dopo http:// e https:// prima.

Quindi, usa explode per dividere il dominio in diversi elementi. Per il caso speciale in cui potrebbe iniziare con www , controllare il valore del primo elemento dell'arrays esploso. Se il primo è www , allora il secondo deve essere il sottodominio.

 $url = 'http://www.sub.yourwebsite.com'; $parsed = parse_url($url); $domain = explode('.', $parsed['host']); $subdomain = ''; if ($domain[0] == 'www') $subdomain = $domain[1]; else $subdomain = $domain[0]; 

A seconda di cosa ti serve, una soluzione più pulita potrebbe essere quella di assicurarti di servire prima gli URL coerenti. Per redirect tutto http://yoursite.com a http://www.yoursite.com, inserisci questo nel tuo file .htaccess (nella directory principale assumendo l'utilizzo di apache).

 RewriteEngine On RewriteCond %{HTTP_HOST} ^your-site.com [NC] RewriteRule ^(.*)$ http://www.your-site.com/$1 [L,R=301] 

Altre varianti di questo codice qui . Questo aiuta anche un po 'con il SEO, ed è generalmente una buona pratica.

Invece di select la prima parte del dominio e verificare se è www, puoi anche partire da dietro. Dopo aver esploso il nome del dominio, l'ultima parte sarà 'com' e la parte precedente sarà 'yoursite'. La parte precedente è "random" o "www". 'www' è un sottodominio e potresti persino dire che 'www.random' è un sottodominio diverso da 'random'.

Lo svantaggio è che un TLD può essere '.com', ma può anche essere '.co.uk', nel qual caso 'yoursite' sarebbe considerato un sottodominio, mentre non lo è.

Quello che vedi spesso, soprattutto in framework o librerie che possono essere utilizzate in più siti, è un'impostazione che ti consente di specificare il nome host principale (yoursite.com). In questo modo, puoi facilmente concludere che tutto tra protocol:// e quel nome host è il tuo sottodominio.