PHP REGEX: obtener dominio desde URL

Resuelto Adam Halasz asked hace 54 años • 9 respuestas

Lo que quiero


Quiero obtener de una URLparte domainasí que desde http://example.com/->example.com

Ejemplos:


+----------------------------------------------+-----------------------+
| input                                        | output                |
+----------------------------------------------+-----------------------+
| http://www.stackoverflow.com/questions/ask   | www.stackoverflow.com |
| http://validator.w3.org/check                | validator.w3.org      |
| http://www.google.com/?q=hello               | www.google.com        |
| http://google.de/?q=hello                    | google.de             |
+----------------------------------------------+-----------------------+

Encontré algunas preguntas relacionadas stackoverflowpero ninguna era exactamente lo que estaba buscando.

¡Gracias por cualquier ayuda!

Adam Halasz avatar Jan 01 '70 08:01 Adam Halasz
Aceptado

No es necesario utilizar una expresión regular para esto. PHP tiene una función incorporada para hacer precisamente esto. Usar parse_url():

$domain = parse_url($url, PHP_URL_HOST);
cletus avatar Aug 09 '2010 17:08 cletus

Yo suelo:

$domain = parse_url('http://' . str_replace(array('https://', 'http://'), '', $url), PHP_URL_HOST);

Porque parse_urlno devuelve la clave de host cuando falta el esquema en $url.

Marcin Żurek avatar May 17 '2016 13:05 Marcin Żurek
$tmp = parse_url($url);
$url = $tmp['host']
turbod avatar Aug 09 '2010 17:08 turbod

Es como la expresión regular de theraccoonbear pero con soporte para dominios HTTPS.

if (preg_match('/https?:\/\/([^\/]+)\//i', $target_string, $matches)) {
  $domain = $matches[1];
}
fnkr avatar Dec 06 '2013 08:12 fnkr