PHP REGEX: obtener dominio desde URL
Lo que quiero
Quiero obtener de una URL
parte domain
así 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 stackoverflow
pero ninguna era exactamente lo que estaba buscando.
¡Gracias por cualquier ayuda!
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);
Yo suelo:
$domain = parse_url('http://' . str_replace(array('https://', 'http://'), '', $url), PHP_URL_HOST);
Porque parse_url
no devuelve la clave de host cuando falta el esquema en $url
.
$tmp = parse_url($url);
$url = $tmp['host']
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];
}