problème sur une expression régulière...

mf
Petit nouveau ! | 2 Messages

29 avr. 2009, 09:51

Bonjour

voici mon problème :
 $tmp2 = preg_split("`(<prix>)|(<prix\s.*>)|(<\/prix>)`i","fff  <prix base=\"EUR TTC\">z4.64</prix> ddd ");
en faite je voudrais ressortir les 3 chaines suivantes :
$tmp[0]="fff "
$tmp[1]="z4.64"
$tmp[2]=" ddd "
mais avec le code si dessus je n'ai que :
$tmp[0]="fff "
$tmp[1]=" ddd "
mais avec le code suivant :
 $tmp2 = preg_split("`(<prix>)|(<prix\s.*>z)|(<\/prix>)`i","fff  <prix base=\"EUR TTC\">z4.64</prix> ddd ");
j'ai bien ce que je souhaite....

en fait si je rajoute dans mon modele un caractère avant ou apres le ">" ca résout le pronlème mais c'est pas ce que je souhaite.

Merci au expert des regex.... si vous avez ma solution...

Michel

ViPHP
ViPHP | 4039 Messages

29 avr. 2009, 09:57

Pourquoi tout ces '|' (ou logique) ? Ca complique toujours tout, mieux vaut simplifier en utilisant seul masque, mais en le rendant assez flexible pour s'appliquer partout.

Ton erreur, sinon, c'est le . qui est avare, et qui ne s'arrête pas à la première occurrence trouvée mais à la dernière. Une erreur classique.

Voilà quelque chose de green:

Code : Tout sélectionner

<\/?prix[^>]*>
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

mf
Petit nouveau ! | 2 Messages

29 avr. 2009, 10:04

merci chef ça marche...mieux avec ton code....

j'ai encore une marge de progression dans les regex....