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

È stato utile?

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);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top