214-image1-fr1236619017.jpg

PHP : ajouter ou modifier un paramètre GET dans l’URL

J’ai développé une fonction PHP permettant d’ajouter ou de modifier un parametre dans la chaine de requête GET d’une URL (query string).
 
J’ai appelé cette fonction "ajouterParametreGET". Je l’utilise régulièrement pour générer les URLs des systèmes de pagination ou des URLs de menus de navigation.
 
 
 
 
 

Presentation de la fonction

 
ajouterParametreGET($url, $paramNom, $paramValeur);
 
La fonction prends 3 paramètres :
 
  • $url : l’URL que vous souhaitez modifier (exemple : "http://www.monsite.com/repertoire1/index.html?nbrPage=7")
  • $paramNom : c’est le nom du paramètre à ajouter ou modifier (exemple : "nbrPage")
  • $paramValeur : c’est la valeur du paramètre à ajouter ou modifier (exemple : "14")
 

Exemple 1 d’utilisation de la fonction

 
Si le paramètre existe déjà dans l’URL à modifier, la fonction modifie la valeur du paramètre.
 
<?
$nouvelleURL = ajouterParametreGET("http://www.monsite.com/repertoire1/index.html?nbrPage=38&langue=fr", "nbrPage", "14");
echo $nouvelleURL;
?>
 
affichera :
 
http://www.monsite.com/repertoire1/index.html?nbrPage=14&langue=fr
 

Exemple 2 d’utilisation de la fonction

 
Si le paramètre n’existe pas déjà dans l’URL à modifier, la fonction ajoute le paramètre en fin de chaine.
 
<?
$nouvelleURL = ajouterParametreGET("http://www.monsite.com/repertoire1/index.html?langue=fr", "nbrPage", "14");
echo $nouvelleURL;
?>
 
affichera :
 
http://www.monsite.com/repertoire1/index.html?langue=fr&nbrPage=14
 

Voici le code PHP de la fonction

 
<?
// —————————————–
// Ajoute/Modifie un parametre à un URL.
// —————————————–
function ajouterParametreGET($url, $paramNom, $paramValeur){
$urlFinal = "";
if($paramNom==""){
$urlFinal = $url;
}else{
$t_url = explode("?",$url);
if(count($t_url)==1){
// pas de queryString
$urlFinal .= $url;
if(substr($url,strlen($url)-1,strlen($url))!="/"){
$t_url2 = explode("/",$url);
if(preg_match("/./",$t_url2[count($t_url2)-1])==false){
$urlFinal .= "/";
}
}
$urlFinal .= "?".$paramNom."=".$paramValeur;
}else if(count($t_url)==2){
// il y a une queryString
$paramAAjouterPresentDansQueryString = "non";
$t_queryString = explode("&",$t_url[1]);
foreach($t_queryString as $cle => $coupleNomValeur){
$t_param = explode("=",$coupleNomValeur);
if($t_param[0]==$paramNom){
$paramAAjouterPresentDansQueryString = "oui";
}
}
if($paramAAjouterPresentDansQueryString=="non"){
// le parametre à ajouter n’existe pas encore dans la queryString
$urlFinal = $url."&".$paramNom."=".$paramValeur;
}else if($paramAAjouterPresentDansQueryString=="oui"){
// le parametre à ajouter existe déjà dans la queryString
// donc on va reconstruire l’URL
$urlFinal = $t_url[0]."?";
foreach($t_queryString as $cle => $coupleNomValeur){
if($cle > 0){
$urlFinal .= "&";
}
$t_coupleNomValeur = explode("=",$coupleNomValeur);
if($t_coupleNomValeur[0]==$paramNom){
$urlFinal .= $paramNom."=".$paramValeur;
}else{
$urlFinal .= $t_coupleNomValeur[0]."=".$t_coupleNomValeur[1];
}
}
}
}
}
return $urlFinal;
}
?>

Auteur : Fabien Branchut

Fabien Branchut
Concepteur de site web depuis 2001 : développement web et SEO. Co-fondateur et directeur web de l'agence Studio Vitamine depuis 2008 : conception e-commerce, chef de projet, stratégie SEO. Site de Fabien Branchut.

Commentaires Facebook

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *