Page 1 sur 1
reg exp
Posté : 18 janv. 2009, 20:32
par Invité
Bonjour à tous,
J'ai une chaine comme ceci:
$url = "test=1&toto=2&var=18&test=4&test=5";
comment écrire une expression régulière qui suppirme "&test=" et sa valeur quelle qu'elle soit ? (ici, 1, 4 et 5)
Merci pour vos réponses.
Posté : 18 janv. 2009, 20:47
par blof
bonsoir,
<?php
$url = "test=1&toto=2&var=18&test=4&test=5";
$url = preg_replace('/&*test=\d+/', '', $url);
$url = preg_replace('/^&/', '', $url); // suppression du premier "&" si il existe.
echo $url;
?>
Posté : 18 janv. 2009, 20:51
par blof
j'ai supposé un peu vite que les valeurs de "test" étaient numériques.
correction :
$url = preg_replace('/&*test=[^&]+/', '', $url);
Posté : 18 janv. 2009, 20:52
par Invité
merci! j'ai beau essayer, j'arrive pas à me faire aux expressions régulières!
y'a til une méthode pour les apprendre?
est-ce que celle ci est utilisable de la même manière en javascript?
Posté : 18 janv. 2009, 21:12
par blof
y'a til une méthode pour les apprendre?
Un jour je suis tombé sur ce tutoriel :
http://lumadis.be/regex/tuto_pcre.php et je ne l'ai plus quitté.
J'en profite pour remercier son auteur.
est-ce que celle ci est utilisable de la même manière en javascript?
En JavaScript on utilise les motifs POSIX et preg_replace() utilise les motifs PCRE. ( voir tuto )
Mais les "motifs" de notre exemple devraient fonctionner en JavaScript.
Posté : 18 janv. 2009, 23:05
par jojolapine
Regarde du côté de
http://fr2.php.net/parse_url , c'est plus adapté à tes besoins il me semble....
Posté : 19 janv. 2009, 01:18
par blof
Je ne vois pas trop comment utiliser parse_url() pour ce problème.
Est-ce que tu peux expliquer ?
( Je ne vois pas trop non plus comment on en est arrivé à $url = "test=1&toto=2&var=18&test=4&test=5"; )
Posté : 19 janv. 2009, 01:49
par Invité
enfait j'ai une fonction javascript qui prend des valeurs et les passe en paramètres dans l'url. La fonction javascript s'execute a chaque rechargement de page.
Ma fonction js ajoute les paramètres "aveuglément" dans l'url. Si par exemple il y a déjà test=1 dans l'url et que j'envoie une nouvelle valeur pour test(2 par exemple), je me retrouve avec &test=1&test=2
=> la valeur précédente de ma variable n'est pas écrasée. la seule solution que j'ai trouvé est d'utiliser une expression régulière pour remplacer toutes les occurences "&test=..." par "" avant d'ajouter ensuite ma nouvelle var et sa valeur.
Y a til y moyen pour écraser des valeurs précédentes de variables dans une url? on va passer dans le javascript la...
Posté : 19 janv. 2009, 10:18
par jojolapine
Oui il vaut peut-être mieux corriger la source, autrement dit le javascript, tu peux nous montrer le code qui s'occupe d'ajouter les variables dans l'url?