PHP - REGEX HostName Extração
-
06-07-2019 - |
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
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);