parts actual php url

actual - php url request



¿Cómo eliminar http://, www y slash de URL en PHP? (6)

Necesito una función php que produzca un nombre de dominio puro desde la URL. Así que esta función debe eliminarse de las partes http:// , www y / (barra diagonal) de la URL si estas partes existen. 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é la función parse_url , pero no devuelve lo que necesito. Desde entonces, soy principiante en PHP, fue difícil para mí. Si tienes alguna idea, por favor responde.
Gracias por adelantado.


Hay muchas maneras de tomar el dominio de una url que 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 anteriores devuelven la misma respuesta: example.com


Intenta esto, eliminará lo que querías (http :: //, www y barra diagonal) pero conservará otros subdominios como example.google.com

$host = parse_url(''http://www.google.com'', PHP_URL_HOST); $host = preg_replace(''/^(www/.)/i'', '''', $host);



$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 tus entradas de ejemplo.


$str = ''http://www.google.com/''; $str = preg_replace(''#^https?://#'', '''', rtrim($str,''/'')); echo $str; // www.google.com


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 devolvería el dominio de segundo nivel, aunque sería inútil para los dominios .co.uk, por lo que es posible que desee hacer más comprobaciones e incluir partes adicionales si strrev ($ host [0]) es uk, au, etc.