php - estrazione del nome host regex
-
06-07-2019 - |
Domanda
Ho cercato un'espressione regex che sputasse solo la parte 'stackoverflow' e nessun www. o .com ecc. Tutto quello che ho potuto trovare è stato verificare se gli URL erano validi ... Ho usato il filtro URL di PHP per determinare quanto sto cercando di determinare quale sito è.
Non ho mai scritto un'espressione prima, quindi spero che qualcuno possa controllarla / raccomandare una soluzione migliore.
preg_match('@^(?:http://)(?:www.)?([^.]+)@i', $url, $matches)
modifica: Tutti gli URL di cui mi occupo sono .com se questo aiuta
Soluzione
one-liner senza usare espressioni regolari !!!
$url = 'http://stackoverflow.com';
$d = array_shift( explode( '.', str_replace('www.', '', parse_url( $url, PHP_URL_HOST )) ) );
echo $d;
Altri suggerimenti
Hai considerato la parse_url () di PHP?
Se sai che la cosa che stai avendo è un URL e il dominio termina in .com una cosa semplice come
preg_match('#([^\.]*)\.com#', $url, $matches);
dovrebbe fare il trucco.
Anche se questo fallirà su un dominio come www.com.foo.com
ma potrebbe essere sufficiente, a seconda della tua situazione.
preg_match('#https?://(?:www.)?(.*?)\.com#i', $str, $match);