(PHP 4, PHP 5, PHP 7)
parse_url — Interpreta uma URL e retorna os seus componentes
Esta função retorna uma matriz associativa retornando os vários componentes que estão presentes em uma url. Se um dos elementos não estiver presente, não será criada uma entrada para ele. Os valores dos elementos do array não são codificados.
Esta função não é um meio para validar a URL indicada, ela somente quebra nas partes listadas. URLs parciais também são aceitas, parse_url() tenta o melhor para interpreta-las corretamente.
url
A URL a ser interpretada. Caracteres inválidos são substituídos por _.
Para URLs extremamente mal formadas, parse_url() pode retornar
FALSE
.
Se o parâmetro component
for omitido, um array
associativo é retornado. O array será composto de ao menos um elemento.
As possíveis chaves do array são:
Se o parâmetro component
for informado,
parse_url() retorna uma string (ou um
integer, em caso de PHP_URL_PORT
)
ao invés de um array. Se o componente requisitado não existir
na URL, NULL
será retornado.
Versão | Descrição |
---|---|
5.4.7 | Corrigido o reconhecimento do host quando o protocolo é omitido e um separador de componentes existe. |
5.3.3 |
Removido o E_WARNING que era emitido quando a
interpretação de uma URL falhava.
|
5.1.2 | Adicionado o parâmetro component . |
Exemplo #1 Um exemplo da 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));
?>
O exemplo acima irá imprimir:
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"
Exemplo #2 Um exemplo da parse_url() sem o protocolo
<?php
$url = '//www.example.com/path?googleguy=googley';
// Prior to 5.4.7 this would show the path as "//www.example.com/path"
var_dump(parse_url($url));
?>
O exemplo acima irá imprimir:
array(3) { ["host"]=> string(15) "www.example.com" ["path"]=> string(5) "/path" ["query"]=> string(17) "googleguy=googley" }
Nota:
Esta função pode não retornar resultados corretos para URLs relativas.
Nota:
O propósito dessa função é interpretar URLs e não URIs. Porém, para compatibilidade com versões anteriores, ela é capaz de interpretar o protocolo file:// no qual barras triplas (file:///...) são permitidas. Qualquer outro protocolo é inválido.