(PHP 4, PHP 5, PHP 7)
parse_url — Analiza un URL y devuelve sus componentes
Esta función analiza una URL y devuelve un array asociativo que contiene aquellos componentes presentes en la URL.
El propósito de esta función no es validar la URL dada, tan solo la separa en las partes listadas anteriormente. Las URLs parciales son aceptadas también, parse_url() hace lo mejor que puede para procesarlas correctamente.
url
La URL a analizar. Caracteres inválidos son reemplazados por _.
component
Especifique uno de PHP_URL_SCHEME
,
PHP_URL_HOST
, PHP_URL_PORT
,
PHP_URL_USER
, PHP_URL_PASS
,
PHP_URL_PATH
, PHP_URL_QUERY
o PHP_URL_FRAGMENT
para recibir solo un
componente URL específico como un valor tipo string (excepto cuando
se da PHP_URL_PORT
, en cuyo caso el valor de
retorno será un integer).
Sobre URLs seriamente malformadas, parse_url() puede devolver
FALSE
.
Si se omite el parámetro component
, un
array asociativo es devuelto. Al menos un elemento estará
presente en el array. Claves potenciales en este array son:
Si se especifica el parámetro componente
,
parse_url() devolverá un string (o un
integer, para el caso de PHP_URL_PORT
)
en lugar de un array. Si el componente solicitado no existe en la
URL dada, será devuelto NULL
.
Versión | Descripción |
---|---|
5.4.7 | Arreglado el reconocimiento de host cuando scheme es omitido y está presente un separador de componentes que lo encabeza. |
5.3.3 |
Eliminado el E_WARNING que era producido cuando fallaba el análisis de la
URL.
|
5.1.2 | Se agregó el parámetro component. |
Ejemplo #1 Un ejemplo de parse_url()
<?php
$url = 'http://username:password@hostname:9090/path?arg=value#anchor';
var_dump(parse_url($url));
var_dump(parse_url($url, PHP_URL_SCHEME));
var_dump(parse_url($url, PHP_URL_USER));
var_dump(parse_url($url, PHP_URL_PASS));
var_dump(parse_url($url, PHP_URL_HOST));
var_dump(parse_url($url, PHP_URL_PORT));
var_dump(parse_url($url, PHP_URL_PATH));
var_dump(parse_url($url, PHP_URL_QUERY));
var_dump(parse_url($url, PHP_URL_FRAGMENT));
?>
El resultado del ejemplo sería:
array(8) { ["scheme"]=> string(4) "http" ["host"]=> string(8) "hostname" ["port"]=> int(9090) ["user"]=> string(8) "username" ["pass"]=> string(8) "password" ["path"]=> string(5) "/path" ["query"]=> string(9) "arg=value" ["fragment"]=> string(6) "anchor" } string(4) "http" string(8) "username" string(8) "password" string(8) "hostname" int(9090) string(5) "/path" string(9) "arg=value" string(6) "anchor"
Ejemplo #2 Un ejemplo de parse_url() con el esquema ausente
<?php
$url = '//www.example.com/path?googleguy=googley';
// Antes de 5.4.7, esto mostraría la ruta como "//www.example.com/path"
var_dump(parse_url($url));
?>
El resultado del ejemplo sería:
array(3) { ["host"]=> string(15) "www.example.com" ["path"]=> string(5) "/path" ["query"]=> string(17) "googleguy=googley" }
Nota:
Esta función no funciona con URLs relativas.
Nota:
Esta función tiene el propósito específico de procesar URLs, y no URIs. Sin embargo, para cumplir con los requerimientos de retrocompatibilidad de PHP, hace una excepción para el esquema file:// en donde se permiten tres barras (file:///...). Para cualquier otro esquema, lo anterior es inválido.