Fonction parse_url(). Comment décomposer une url.

Attention, depuis PHP 5.5.0, certaines extensions SQL sans doute utilisées dans ce tutoriel peuvent être obsolètes et seront supprimées dans le futur, vous devez donc adapter les codes! Exemples ici.
La fonction parse_url() permet d'analyser une URL et d'en retourner ses composants. Son utilisation est très simple car il suffit simplement de passer en paramètre l'url dans la fonction :
parse_url(http://mon-site.com) 
Pour plus de facilité dans l'analyse de l'url, on utilise comme d'habitude des variables :
<?php
$page_url = 'http://creer-un-site.fr/ma-page.php?id=9#ancre';
$url = parse_url($page_url);
?>
Afin de savoir ce que retourne cette url parsé, on fait un simple print_r($url); :
<?php
$page_url = 'http://creer-un-site.fr/ma-page.php?id=9#ancre';
$url = parse_url($page_url);
echo '<pre>';
print_r($url);
echo '</pre>';
?>
Ce qui nous retourne :
Array
(
    [scheme] => http
    [host] => creer-un-site.fr
    [path] => /ma-page.php
    [query] => id=9
    [fragment] => ancre
)
 A partir de là et pour récupérer chaque élément, il suffit tout simplement de faire un simple echo de $url avec en paramètre l'élément du tableau qui nous intéresse ['host'] soit :
<?php
$page_url = 'http://creer-un-site.fr/ma-page.php?id=9#ancre';
$url = parse_url($page_url);
echo 'Le protocole est : <b>'.$url['scheme'].'</b><br/>.';
echo 'Le domaine est : <b>'.$url['host'].'</b><br/>.';
echo 'Le fichier est : <b>'.$url['path'].'</b><br/>.';
echo 'L\'argument est : <b>'.$url['query'].'</b><br/>.';
echo 'L\'ancre est : <b>'.$url['fragment'].'</b><br/>.';
?>
Supposons maintenant que vous voulliez à nouveau décomposer une partie de ce qui à été parsé pour récupérer par exemple juste le numéro d'identifiant contenu dans la variable $url['query']. Pour ce faire, on va juste utiliser un tableau array() qui associé à la fonction parse_str() va nous permettre de répèrer, d'analyser et d'associer chaque variable à leurs valeurs respectives.
<?php
$page_url = 'http://creer-un-site.fr/ma-page.php?id=9#ancre';
$url = parse_url($page_url);
$result=array();
parse_str($url['query'],$result);
echo '<pre>';
print_r($result);
echo '</pre>';
echo 'L\'identifiant est : '.$result['id'].'';
?>
Vous allez me dire :"C'est sympa ton truc mais je ne vois pas à quoi ça peut me servir!!"
A ça je vous répond : "...à plein de chose...".

Par exemple, on peut très bien utiliser cette fonction pour repérer des url dans un texte ou encore connaitre les mots clés tapé dans Google qui ont aboutit sur vos pages, etc ... Je sens que cette dernière à retenut votre attention , alors voyons en pratique ce que ça donne.

1-Pour ce teste, on va se servir de la requête "créer un site" sur le moteur Google.com.
2-L'url obtenu est : http://www.google.com/search?hl=&q=cr%C3%A9er+un+site&sourceid=navclient-ff&rlz=1B3GGGL_frFR301FR301&ie=UTF-8
3-On parse l'url et on obtient la valeur : [query] => hl=&q=cr%C3%A9er+un+site&sourceid=navclient-ff&rlz=1B3GGGL_frFR301FR301&ie=UTF-8
4-On re décompose la valeur obtenut par [query].
5-On obtient : [q] => créer un site.
6-On decode la valeur de [q] qui est en UTF-8 avec utf8_decode() (voir la fin de l'url ^^).
7-On obtient comme résultat : créer un site .
<?php
$page_url = 'http://www.google.com/search?hl=&q=cr%C3%A9er+un+site&sourceid=navclient-
ff&rlz=1B3GGGL_frFR301FR301&ie=UTF-8'
; $url = parse_url($page_url); $result=array(); parse_str($url['query'],$result); echo 'Mot clé : '.utf8_decode($result['q']).''; ?>
Maintenant, avec un peut d'imagination, vous pouvez par exemple vous amusez à enregistrer en BD chaque requête venant de Google pour chacune de vos pages et pourquoi pas générer un nuage de mots clé (tag cloud)...
Voir/déposer un commentaire (4) | Signaler un problème