Pergunta

Eu tenho procurado uma expressão de regex que cuspirá apenas a parte 'Stackoverflow' e nenhum www. ou .com etc. Tudo o que pude encontrar foi verificar se os URLs eram válidos ... usei o filtro de URL do PHP para determinar que muito agora estou procurando determinar qual site é.

Eu nunca escrevi uma expressão antes, espero que alguém possa verificar/recomendar uma solução melhor.

preg_match('@^(?:http://)(?:www.)?([^.]+)@i', $url, $matches)

Edit: todos os URLs com quem estou lidando são .com se isso ajudar

Foi útil?

Solução

One-liner sem usar expressões regulares !!!

$url = 'http://stackoverflow.com';
$d = array_shift( explode( '.', str_replace('www.', '', parse_url( $url, PHP_URL_HOST )) ) );
echo $d;

Outras dicas

Você já considerou PHP parse_url () função?

Se você sabe que o que você está tendo é um URL e o domínio terminando em .com uma coisa simples como

preg_match('#([^\.]*)\.com#', $url, $matches);

deve fazer o truque.

Enquanto isso falhará em um domínio como www.com.foo.com mas pode ser suficiente, dependendo da sua situação.

preg_match('#https?://(?:www.)?(.*?)\.com#i', $str, $match);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top