parse_url
(PHP 4, PHP 5, PHP 7)
parse_url — Analyse une URL et retourne ses composants
Description
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.
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
ouPHP_URL_FRAGMENT
pour récupérer uniquement une partie de l'URL en tant que chaîne de caractères (sauf lorsquePHP_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 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.
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
Version en cache
23/12/2024 12:54:01 Cette version de la page est en cache (à la date du 23/12/2024 12:54:01) afin d'accélérer le traitement. Vous pouvez activer le mode utilisateur dans le menu en haut pour afficher la dernère version de la page.Document créé le 30/01/2003, dernière modification le 26/10/2018
Source du document imprimé : https://www.gaudry.be/php-rf-parse-url.html
L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.
Références
Ces références et liens indiquent des documents consultés lors de la rédaction de cette page, ou qui peuvent apporter un complément d'information, mais les auteurs de ces sources ne peuvent être tenus responsables du contenu de cette page.
L'auteur de ce site est seul responsable de la manière dont sont présentés ici les différents concepts, et des libertés qui sont prises avec les ouvrages de référence. N'oubliez pas que vous devez croiser les informations de sources multiples afin de diminuer les risques d'erreurs.