(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. 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.
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).
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 composant
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 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.