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é. :love4:

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
Regarde du côté de http://fr2.php.net/parse_url , c'est plus adapté à tes besoins il me semble....
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?