[Résolu] Problème Expressions régulières

Dharius

WRInaute impliqué
Bonjour,

Une fois n'est pas coutume, j'ai un problème d'expressions régulières... mais je fais des progrès :D

Voilà, j'ai un texte du genre :

$texte = "tarif1 :US$6; tarif2 :US$12; tarif3 : US$2";

je voudrais replacer "US$X" par "valeur=X"...

J'utilise l'expression suivante mais elle ne remplace que la première occurence :

Code:
eregi_replace ("US(((.*){1,5}))", "valeur=\\1",$texte);

Qu'elqu'un s'y connait-il assez pour m'aider ?
 

Dharius

WRInaute impliqué
Heu... en fait je complique un peu la chose...

je veux multiplier cette valauer par 3.14 par exemple genre "'valeur=$1*3.14" -> mais ça ne marche pas bien entendu!

Comment faire ?
 

medium69

WRInaute passionné
Dharius a dit:
Heu... en fait je complique un peu la chose...

je veux multiplier cette valauer par 3.14 par exemple genre "'valeur=$1*3.14" -> mais ça ne marche pas bien entendu!

Comment faire ?

C'est pourtant simple :mrgreen: ...

Il faut que tu passe passe une fonction pour cela...

dans ce cas cela devient :

Dans la première on ne cherchait qu'une séquence US$ suivi d'au moins un chiffre.

Dans le nouveau cas, non seulement, nous voulons récupérer l'intergalité du nombre et le modifier...

On cherche le masque US$ suivi d'une série de chiffre de 1 à l'infini, suivi de n'importe quel caractère qui n'est pas un chiffre ou alors une fin de texte.

Code:
function MaSuperFonction($value) {

$var = 'valeur='.$value[1]*3.14.$value[2];

return $var
}

preg_replace_callback('#US\$([0-9]+)([^0-9]|$)#U', 'MaSuperFonction', $texte);

J'ai galéré longtemps avec les regex, et maintenant c'est aussi limpide que de l'eau claire...

Je devrais peut-être me mettre au chinois un de ces quatre :wink:
 

Dharius

WRInaute impliqué
Lol, j'allucine, ça marche et ça a l'air si facile pour toi : MERCI !!!

En hommage pour toi, la foncion portera toujours le même nom "MaSuperFonction" hihi...

Wai c'est comme tout, à un moment, tu as le déclic et tout te parait plus simple....

Merci ;)
 

medium69

WRInaute passionné
Dharius a dit:
Lol, j'allucine, ça marche et ça a l'air si facile pour toi :

Tu sais... j'ai galéré durant des heures et des heures, car c'est vraiment du chinois.

Mais une fois que tu as réussi à comprendre toutes les facettes, c'est un vrai régal.

Dharius a dit:
En hommage pour toi, la foncion portera toujours le même nom "MaSuperFonction" hihi...

euh...

Gaffe à toi, j'ai dépose le nom à l'Inpi aujourd'hui :lol:
 

medium69

WRInaute passionné
je viens de voir que tu utilisais eregi_replace...

Si US peut aussi être us, il faut que tu ajoutes « i » à la suite de « U » dans preg_replace_callback
 

Discussions similaires

Haut