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

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : problème sur une expression régulière...

par mf » 29 avr. 2009, 10:04

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

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

par Berzemus » 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[^>]*>

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

par mf » 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