Analyse une URL et retourne ses composants

# parse_url

(PHP 4, PHP 5, PHP 7)

parse_url — Analyse une URL et retourne ses composants

### Description

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

Cette fonction analyse une URL et retourne un tableau associatif contenant tous les éléments qui y sont présents. Les valeurs des éléments du tableau NE sont PAS URL décodés

Cette fonction n'est pas faite pour valider l'URL fournie, elle ne fait que la découper en parties listées ci-dessous. Les URL partielles sont également acceptées, la fonction parse_url() fera de son mieux pour les analyser correctement.

### Liste de paramètres

`url`

  L'URL à analyser. Les caractères invalides sont remplacés par des caractères soulignés _.

`component`

  Peut être une des constantes parmi `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` pour récupérer uniquement une partie de l'URL en tant que chaîne de caractères (sauf lorsque `PHP_URL_PORT` est fourni ; dans ce cas, la valeur retournée sera un entier).

### Valeurs de retour

Pour les URL vraiment mal formées, parse_url() peut retourner `FALSE`.

Si le paramètre `component` est omis, un array associatif est retourné. Au moins un élément sera présent dans le tableau. Voici les clés potentielles de ce tableau:

- scheme - e.g. http
- host
- port
- user
- pass
- path
- query - après le point d'interrogation "?"
- fragment - après le croisillon (dièse) "#"

Si le paramètre `component` est spécifié, parse_url() retourne une string (ou un entier dans le cas d'utilisation de la constante `PHP_URL_PORT`)au lieu d'un array. Si le composant demandé n'existe pas dans l'URL, `NULL` sera retourné.

### Historique

Version | Description
--- | ---
5.4.7 | Correction de la reconnaissance de l'hôte lorsque le schéma est omis et que un séparateur est présent en début de chaîne.
5.3.3 | Suppression du `E_WARNING` émis lorsque l'URL était invalide.
5.1.2 | Ajout du paramètre `component`

### Exemples

Exemple #1 Exemple avec 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));
?>`

L'exemple ci-dessus va afficher :

    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"

Exemple #2 Exemple avec la fonction parse_url() sans schéma

`<?php
$url = '//www.example.com/path?googleguy=googley';
// Avant PHP 5.4.7, le chemin sera "//www.example.com/path"
var_dump(parse_url($url));
?>`

L'exemple ci-dessus va afficher :

    array(3) {
      ["host"]=>
      string(15) "www.example.com"
      ["path"]=>
      string(5) "/path"
      ["query"]=>
      string(17) "googleguy=googley"
    }

### Notes

> Note:

> Cette fonction peut ne pas donner des résultas corrects pour les URLs relatives.

> Note:

> parse_url() a été créée tout spécialement pour analyser les URL et non les URI. Cependant, pour des raisons de compatibilité adjacente, PHP fait une exception pour le schéma file:// où les triples slashs (file:///...) sont autorisés. Tous les autres schémas sont invalides.

### Voir aussi

- pathinfo() - Retourne des informations sur un chemin système
- parse_str() - Analyse une chaîne de caractères d'une variable
- http_build_query() - Génère une chaîne de requête en encodage URL
- dirname() - Renvoie le chemin du dossier parent
- basename() - Retourne le nom de la composante finale d'un chemin
- » RFC 3986