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

¿Fue útil?

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);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top