Necesito una función php que produzca un nombre de dominio puro desde la URL. Por lo tanto, esta función debe eliminar http://
, www
y /
(barras) partes de la URL si existen estas partes. Aquí hay ejemplos de entradas y salidas: Entrada ->http://www.google.com/ | Salida -> google.com
Entrada ->http://google.com/ | Salida -> google.com
Entrada -> www.google.com/ | Salida -> google.com
Entrada -> google.com/ | Salida -> google.com
Entrada -> google.com | Salida -> google.com
Comprobé parse_url
función, pero no devuelve lo que necesito. Desde que soy principiante en PHP, fue difícil para mí. Si tienes alguna idea, por favor responde.
Gracias por adelantado.¿Cómo eliminar http: //, www y slash de URL en PHP?
Respuesta
$input = 'www.google.co.uk/';
// in case scheme relative URI is passed, e.g., //www.google.com/
$input = trim($input, '/');
// If scheme not included, prepend it
if (!preg_match('#^http(s)?://#', $input)) {
$input = 'http://' . $input;
}
$urlParts = parse_url($input);
// remove www
$domain = preg_replace('/^www\./', '', $urlParts['host']);
echo $domain;
// output: google.co.uk
Funciona correctamente con todas sus entradas de ejemplo.
y ¿qué pasa si no es www sino secure.google.com? – Gordon
Yeap, eso es lo que necesito. ¡Muchas gracias! – JohnUS
@Gordon: Pregunta establecida 'debe eliminarse http: //, www y /'. Los subdominios arbitrarios no formaban parte de él y tampoco funcionarían si lo necesitara. – webbiedave
Uso parse_url
Prueba de esto, se eliminará lo que quería (http :: // www y la barra final) pero conservará otros subdominios como example.google.com
$host = parse_url('http://www.google.com', PHP_URL_HOST);
$host = preg_replace('/^(www\.)/i', '', $host);
y ¿qué pasa si no es www sino secure.google.com? – Gordon
El OP pidió específicamente que se eliminen http: //, www y el seguimiento reducido, por lo tanto, mi solución solo los elimina. Otras soluciones podrían ser mucho más complicadas y probablemente necesitarían una base de datos de excepciones, .uk, .tw dominios causarían problemas. – h00ligan
if (!preg_match('/^http(s)?:\/\//', $url))
$url = 'http://' . $url;
$host = parse_url($url, PHP_URL_HOST);
$host = explode('.', strrev($host));
$host = strrev($host[1]) . '.' strrev($host[0]);
Esto volvería dominio de segundo nivel, a pesar de que sería inútil para los dominios .es digamos, por lo que es posible que desee hacer más cheques, e incluyen partes adicionales si strrev ($ host [0]) es Reino Unido, au, etc.
Hay muchas maneras de tomar el dominio de una url. He publicado 4 formas a continuación, comenzando desde la más corta hasta la más larga.
# 1
function urlToDomain($url) {
return implode(array_slice(explode('/', preg_replace('/https?:\/\/(www\.)?/', '', $url)), 0, 1));
}
echo urlToDomain('http://www.example.com/directory/index.php?query=true');
# 2
function urlToDomain($url) {
$domain = explode('/', preg_replace('/https?:\/\/(www\.)?/', '', $url));
return $domain['0'];
}
echo urlToDomain('http://www.example.com/directory/index.php?query=true');
# 3
function urlToDomain($url) {
$domain = preg_replace('/https?:\/\/(www\.)?/', '', $url);
if (strpos($domain, '/') !== false) {
$explode = explode('/', $domain);
$domain = $explode['0'];
}
return $domain;
}
echo urlToDomain('http://www.example.com/directory/index.php?query=true');
# 4
function urlToDomain($url) {
if (substr($url, 0, 8) == 'https://') {
$url = substr($url, 8);
}
if (substr($url, 0, 7) == 'http://') {
$url = substr($url, 7);
}
if (substr($url, 0, 4) == 'www.') {
$url = substr($url, 4);
}
if (strpos($url, '/') !== false) {
$explode = explode('/', $url);
$url = $explode['0'];
}
return $url;
}
echo urlToDomain('http://www.example.com/directory/index.php?query=true');
Todas las funciones anteriormente devolver la misma respuesta: example.com
$str = 'http://www.google.com/';
$str = preg_replace('#^https?://#', '', rtrim($str,'/'));
echo $str; // www.google.com
- 1. Eliminar "www", "http: //" de la cadena
- 2. PHP: Eliminar 'WWW' de la URL dentro de una Cadena
- 3. Módulo de reescritura de Microsoft - Forzar www en la url O eliminar www de la url
- 4. ¿Cómo redirigir con "www" URL sin URL "www" o viceversa?
- 5. ¿Cómo eliminar siempre WWW de una url con mod_rewrite?
- 6. diferencia entre http y www
- 7. PHP Eliminar URL de la cadena
- 8. de redirección a https y no http www a www
- 9. PHP eliminar encabezado HTTP
- 10. "URL con WWW y URL sin WWW": ¿hay alguna diferencia entre ellos?
- 11. .htaccess redirigir tanto http: // con y sin www y https: // www a https: // www no
- 12. sitios Www y no www
- 13. Eliminar www en todo el sitio, forzar https en ciertos directorios y http en el resto?
- 14. PHP - PDO return scape slash, ¿cómo eliminarlo?
- 15. Nginx Eliminar WWW y responder a los dos
- 16. ¿Cómo eliminar la primera parte de la url en PHP?
- 17. Redirigir URL que no sea www a www usando .htaccess
- 18. cómo quitar iniciales y finales slash en MySQL
- 19. Problema de cookies PHP - www o sin www
- 20. carriles - www Asegurar está en la URL
- 21. ¿Cómo redirigir las URL que no son www a www usando htaccess?
- 22. PHP: eliminar `http: //` del título del enlace
- 23. Agregar http: // www. en el texto si no existe
- 24. Autenticación HTTP - encabezado WWW-Authenticate - múltiples reinos
- 25. PHP Regex para eliminar http: // de la cadena
- 26. htaccess reorientar para los no-www http y https
- 27. PHP - reemplace http con https en la URL
- 28. ¿Cómo uso y debo depurar WWW :: Mechanize?
- 29. PHP - Eliminar una barra inclinada desde el final de una URL
- 30. Eliminar el prefijo WWW de su sitio web
Este es un duplicado de docenas de preguntas. – tplaner
parse_url mantendrá el nombre de dominio completo, incluidos los subdominios, p. no convierte www.google.com en solo google.com – Gordon
La segunda respuesta más valorada aquí (http://stackoverflow.com/questions/276516/parsing-domain-from-url-in-php) es probablemente la apuesta más simple . – BenOfTheNorth