php - extracción de nombre de host regex
-
06-07-2019 - |
Pregunta
He estado buscando una expresión regular que exprese solo la parte 'stackoverflow' y no www. o .com etc. Todo lo que pude encontrar fue verificar si las URL eran válidas ... He usado el filtro de URL de php para determinar cuánto estoy buscando para determinar qué sitio es.
Nunca antes había escrito una expresión, así que espero que alguien pueda verificarla / recomendar una mejor solución.
preg_match('@^(?:http://)(?:www.)?([^.]+)@i', $url, $matches)
editar: Todas las URL con las que estoy tratando son .com si eso ayuda
Solución
one-liner sin usar expresiones regulares!
$url = 'http://stackoverflow.com';
$d = array_shift( explode( '.', str_replace('www.', '', parse_url( $url, PHP_URL_HOST )) ) );
echo $d;
Otros consejos
¿Ha considerado la función parse_url () de PHP?
Si sabe que lo que está teniendo es una URL y el dominio termina en .com algo tan simple como
preg_match('#([^\.]*)\.com#', $url, $matches);
debería hacer el truco.
Si bien esto fallará en un dominio como www.com.foo.com
pero podría ser suficiente, dependiendo de su situación.
preg_match('#https?://(?:www.)?(.*?)\.com#i', $str, $match);