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.