par
sadeq » 06 déc. 2008, 13:27
Bonjour,
Généralisons en disant que tu as une URL de type :
ou
Code : Tout sélectionner
http://www.xxxxxxxx.xxx/xxx/xxxx.php?xxxxx=xxxxx&menu=accueil&xxxxx
Donc, le critère qui t'intéresse (accueil) se trouve toujours après la partie "menu=" et se termine par un "&" s'il y a d'autres paramètres dans l'URL sinon il se termine par un vide.
C'est ça la clé de voute pour délimiter le mot qui t'intéresse. On entend bien que ce que tu cherches à récupérer est un nom de page, dans cet exemple il s'agit de la page "accueil" mais dans l'absolu c'est un nom de page quelconque.
Donc, voici le modèle du critère recherché :
- 1. le mot recherché doit commencer par "menu="
2. il doit contenir autant de caractères que possible sauf le caractère & (qui désigne sa fin)
3. il peut se terminer par le caractère & ou pas
Un tel modèle peut être représenté par le format logique suivant:
menu=(plusieurs caractères où il n'y a pas &)& 0 ou 1 fois
Le format avec lequel j'ai écrit ce modèle est un format
d'expression régulière. En PHP, on peut utiliser des fonctions de recherche basées sur des expressions régulières pour justement répondre à ce genre de besoin.
Voici comment utiliser ce type de fonctions sous PHP:
<?php
// url de recherche
$url1 = "http://www.xxxxxxxx.xxx/xxx/xxxx.php?menu=accueil&xxxxx";
$url2 = "http://www.xxxxxxxx.xxx/xxx/xxxx.php?xxxxx=xxxxx&menu=accueil&xxxxx";
// recherche dans url1
preg_match("#menu=([^&]*)&?#i", $url1, $resultat); // la fonction recherche tout ce qui est entouré entre ()
// voyons le contenu du tableau $resultat
echo "<pre>"; print_r($resultat); echo "</pre>";
// le mot recherché si trouvé est placé donc dans la case [1] du resultat
echo "<p>mot trouvé dans url1: " . $resultat[1] . "</p>";
// recherche dans url2
preg_match("#menu=([^&]*)&?#i", $url2, $resultat);
echo "<p>mot trouvé dans url2: " . $resultat[1] . "</p>";
?>
Voilà.