(PHP 4, PHP 5, PHP 7)
parse_url — Analyse une URL et retourne ses composants
Cette fonction analyse une URL et retourne un tableau associatif contenant tous les éléments qui y sont présents.
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.
urlL'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).
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:
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 composent
demandé n'existe pas dans l'URL, NULL sera retourné.
| 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 |
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"
}
Note:
Cette fonction ne fonctionne pas avec 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.