PHP: Comment parser une URL
Comment
obtenir les éléments d'une URL, et les paramètres éventuellement
associés?
Deux cas peuvent se présenter: soit l'URL est dans une chaîne de caractère et on veut en retrouver les éléments, soit il s'agit d'un script Web lancé pour traiter les données d'une formulaire par la méthode POST, dont on veut récupérer les données.
Pour parser une URL dans une chaîne, deux fonctions seront utiles, parse_url et parse_str. La première décompose une URL en éléments comme Location en JavaScript, la seconde décompose une chaîne de paramètres en variable et valeurs.Comparaison avec JavaScript
La fonction parse_url à pour équivalent l'objet Location en JavaScript. Les clés du tableau associatif sont remplacées par les propriétés de l'objet Location.
L'URL complète s'obtient avec la constante __FILE__ qui est globale et n'appartient pas au tableau généré par parse_url.
| Données |
PHP
|
JavaScript
|
| URL complète |
__FILE__
|
location.href
|
| Protocole (http) |
scheme
|
protocol
|
| Domaine |
host
|
hostname
|
| Répertoire et fichier |
path
|
pathname
|
| Ancre dans la page |
fragment
|
hash
|
| Paramètres |
query
|
search
|
| Port |
-
|
port
|
| Login |
user
|
-
|
| Mot de passe |
pass
|
-
|
Autres différences:
- Si l'on ajoute à la fois une ancre interne et des paramètres, ce qui n'est pas correct, l'ensemble sera associé à hash en JavaScript et à query en PHP.
- En JavaScript le protocole inclut les deux points, comme dans http: mais pas en PHP.
Utilisation de la fonction parse_url
Exemple:
$url = "http://www.scriptol.fr/comment/parser-url.php#content"; $arr = parse_url($url) print_r($arr);
On obtient un tableau associatif où les clés sont détaillées dans le tableau précédent.
array( "scheme" => http, "host" => www.scriptol.fr, "path" => /comment/parser-url.php, "fragment" => content )
Utilisation de la fonction parse_str
Exemple:
$parameters = $arr["query"]; parse_str($parameters, $data); print_r($data);
$data est un tableau associatif, ou les clés sont les variables passées en paramètres, et les valeurs, le contenu de ces variables.
Par exemple:
fichier.php?nom=untel&numero=50
Le tableau généré sera:
array( "nom" => untel, "numero" => 50 )
Sources et téléchargement
- Code source du script en ligne.
- Code source du script local.
- Archive contenant les sources et une page de démonstration.
Deuxième partie: Retrouver les informations sur une page Web et les données d'un formulaire.
| Tweet |
|
|
