PHP
Cómo desglosar una URL
Buscar..
Introducción
A medida que codifiques PHP, lo más probable es que te pongas en una posición en la que necesites dividir una URL en varias partes. Obviamente, hay más de una forma de hacerlo dependiendo de sus necesidades. Este artículo explicará esas formas para que usted pueda encontrar lo que funciona mejor para usted.
Usando parse_url ()
parse_url (): esta función analiza una URL y devuelve una matriz asociativa que contiene cualquiera de los diversos componentes de la URL que están presentes.
$url = parse_url('http://example.com/project/controller/action/param1/param2');
Array
(
[scheme] => http
[host] => example.com
[path] => /project/controller/action/param1/param2
)
Si necesitas separar el camino puedes usar Explode
$url = parse_url('http://example.com/project/controller/action/param1/param2');
$url['sections'] = explode('/', $url['path']);
Array
(
[scheme] => http
[host] => example.com
[path] => /project/controller/action/param1/param2
[sections] => Array
(
[0] =>
[1] => project
[2] => controller
[3] => action
[4] => param1
[5] => param2
)
)
Si necesita la última parte de la sección, puede usar end () de la siguiente manera:
$last = end($url['sections']);
Si la URL contiene GET vars, también puede recuperarlos.
$url = parse_url('http://example.com?var1=value1&var2=value2');
Array
(
[scheme] => http
[host] => example.com
[query] => var1=value1&var2=value2
)
Si desea desglosar las variables de consulta, puede usar parse_str () de la siguiente manera:
$url = parse_url('http://example.com?var1=value1&var2=value2');
parse_str($url['query'], $parts);
Array
(
[var1] => value1
[var2] => value2
)
Utilizando explotar ()
explode (): devuelve una matriz de cadenas, cada una de las cuales es una subcadena de cadena formada dividiéndola en los límites formados por el delimitador de cadena.
Esta función es bastante sencilla.
$url = "http://example.com/project/controller/action/param1/param2";
$parts = explode('/', $url);
Array
(
[0] => http:
[1] =>
[2] => example.com
[3] => project
[4] => controller
[5] => action
[6] => param1
[7] => param2
)
Puedes recuperar la última parte de la URL haciendo esto:
$last = end($parts);
// Output: param2
También puede navegar dentro de la matriz utilizando sizeof () en combinación con un operador matemático como este:
echo $parts[sizeof($parts)-2];
// Output: param1
Usando basename ()
basename (): dada una cadena que contiene la ruta a un archivo o directorio, esta función devolverá el componente de nombre final.
Esta función devolverá solo la última parte de una URL
$url = "http://example.com/project/controller/action/param1/param2";
$parts = basename($url);
// Output: param2
Si su URL tiene más cosas y lo que necesita es el nombre de directorio que contiene el archivo, puede usarlo con dirname () de la siguiente manera:
$url = "http://example.com/project/controller/action/param1/param2/index.php";
$parts = basename(dirname($url));
// Output: param2