parse_url

(PHP 4, PHP 5, PHP 7)

parse_urlInterpreta uma URL e retorna os seus componentes

Descrição

parse_url ( string $url [, int $component = -1 ] ) : mixed

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.

Parâmetros

url

A URL a ser interpretada. Caracteres inválidos são substituídos por _.

component

Especifique uma das opções PHP_URL_SCHEME, PHP_URL_HOST, PHP_URL_PORT, PHP_URL_USER, PHP_URL_PASS, PHP_URL_PATH, PHP_URL_QUERY ou PHP_URL_FRAGMENT para retornar um componente específico da URL como uma string (exceto para a opção PHP_URL_PORT, neste caso, um integer é retornado).

Valor Retornado

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:

  • scheme - e.g. http
  • host
  • port
  • user
  • pass
  • path
  • query - após a interrogação ?
  • fragment - após a cancela #

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.

Changelog

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.

Exemplos

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($urlPHP_URL_SCHEME));
var_dump(parse_url($urlPHP_URL_USER));
var_dump(parse_url($urlPHP_URL_PASS));
var_dump(parse_url($urlPHP_URL_HOST));
var_dump(parse_url($urlPHP_URL_PORT));
var_dump(parse_url($urlPHP_URL_PATH));
var_dump(parse_url($urlPHP_URL_QUERY));
var_dump(parse_url($urlPHP_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"
}

Notas

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.

Veja Também

  • pathinfo() - Retorna informações sobre um caminho de arquivo
  • parse_str() - Converte a string em variáveis
  • http_build_query() - Gera a string de consulta (query) em formato URL
  • dirname() - Retorna o caminho/path do diretório pai
  • basename() - Retorna apenas a parte que corresponde ao nome do arquivo de um caminho/path