Recuperer les variables d'url dans un tableau.

Soyez le premier à donner votre avis sur cette source.

Snippet vu 15 880 fois - Téléchargée 28 fois

Contenu du snippet

Cette fonction m'a beaucoup servi dans la réécriture dynamique des URL.

Retourne un tableau contenant les paramètres de l'URL avec pour indice le nom du paramètre. Si le paramètre demandé n'existe pas la valeur à son indice sera une chaîne vide.
Un paramètre optionel est une liste de paramètre dans un tableau. Vous y affectez les paramètres que vous voulez extraire de l'URL
Exemple
$url="fiche.php?type_doc=son&page=participer&id_info=2&popup=1";

$parametres[]="type_doc";
$parametres[]="id_info";
$tab_parametres=parseUrl($url,$parametres);

le tableau sera uniquement composé de type_doc et id_info.

Si il n'est pas renseigné, la fonction renvoie tous les paramètres.

Si vous voulez récupérer l'ancre (fiche.php?type_doc=son&page=participer&id_info=2&popup=1#ancre) il suffit de demander le parametre "#" dans la liste de parametres. Il est renvoyé par défaut a l'indice # dans le tableau de retour.

Source / Exemple :


<?
/**

  • @return string[]
  • @param string $url
  • @param string[] $parametres //liste des paramètres à extraire
  • @desc Retourne un tableau contenant les paramètres de l'URL avec pour indice le nom du paramètre. Si le paramètre demandé n'existe pas la valeur à son indice sera une chaîne vide.
  • /
function parseUrl($url,$parametres=null) { $i=0; $params=null; //on ne garde que les paramètres de l'URL $tmp_params=explode("?",$url); if (count($tmp_params)>=2) $tmp_params=$tmp_params[1]; else $tmp_params=""; if ($tmp_params!="") { $ancre=explode("#",$tmp_params); if (count($ancre)==2) { $tmp_params=$ancre[0]; $ancre=$ancre[1]; } else $ancre=""; //on isole les parametres $tmp_params=explode('&',$tmp_params); //On stocke dans un tableau les variables comprises dans l'URL. //format du tableau : //['id_lang'] => 1 //['id_rub'] => 27 //['id_art'] => 5 foreach ($tmp_params as $param) { $value=explode('=',$param); if (count($value)>=2) { $params[$value[0]]=$value[1]; } } if ($parametres!=null) { $tmp_params=null; //On stocke dans un tableau les variables comprises dans l'URL, demandées dans le tableau //passé en paramètre. //format du tableau : //['id_lang'] => 1 //['id_rub'] => 27 //['id_art'] => 5 foreach ($parametres as $param) { //si il y a une ancre de demandée on l'ajoute if ($param=='#') $params["#"]=$ancre; //si le parametre demandé n'existe pas on lui affecte une chaine vide. if (!isset($params[$param])) $params[$param]=""; $tmp_params[$param]=$params[$param]; } $params=$tmp_params; } } return $params; } ?>

A voir également

Ajouter un commentaire

Commentaires

cs_manouille
Messages postés
73
Date d'inscription
vendredi 29 août 2003
Statut
Membre
Dernière intervention
22 juin 2007
-
Heuuuu t'as pas l'air au courant mais $_GET['mavariableURL'] ca marche bien aussi, et c'est plus court à écrire ;-)

Pour reprendre ton exemple :
$url="fiche.php?type_doc=son&page=participer&id_info=2&popup=1";
echo $_GET['type_doc']; //affiche 'son'
echo $_GET['id_info']; //affiche '2'

Enjoy :))
malalam
Messages postés
10844
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
17 -
D'autant plus qu'il y a beaucoup plus simple. UN exemple sans expression régulière parce que j'avais la flemme :
<?php
$url = 'fiche.php?type_doc=son&page=participer&id_info=2&popup=1#ancre';
$aUrl = parse_url ($url);
$aTab = explode ('&', $aUrl['query']);
$aUrl['query'] = array ();
foreach ($aTab as $clef => $val) {
$aTmp = explode ('=', $val);
echo $aTmp[0], '
';
$aUrl['query'][$clef]['variable'] = $aTmp[0];
$aUrl['query'][$clef]['valeur'] = $aTmp[1];
}
echo '', print_r ($aUrl), '

';
?>
Palleas_44
Messages postés
131
Date d'inscription
lundi 12 décembre 2005
Statut
Membre
Dernière intervention
19 avril 2009
-
Mais $_GET à la base c'est un tableau donc tu peux tout recuperer avec foreach nan ?
malalam
Messages postés
10844
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
17 -
Oui, sauf dans le cadre d'une url passée à la fonction. Pas l'url courante, quoi.
Parce que si on s'en tient à l'url courante, en effet, ce code est encore plus inutile.
Palleas_44
Messages postés
131
Date d'inscription
lundi 12 décembre 2005
Statut
Membre
Dernière intervention
19 avril 2009
-
ah ui j'avais pas noté que ca venait d'une fonction :$ Mais ouais désolé pour le créateur mais ce script mangerait des ressources pour rien ^^

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Du même auteur (spottydj)