Remplacer par RegExp l'évaluation d'une operation arithmétique [Résolu]

Signaler
Messages postés
193
Date d'inscription
mercredi 24 août 2005
Statut
Membre
Dernière intervention
3 juin 2016
-
Messages postés
193
Date d'inscription
mercredi 24 août 2005
Statut
Membre
Dernière intervention
3 juin 2016
-
Salut,
Je bute sur un problème :
je parse une chaine de type équation mathématique ex (3x+(5*2) +3X3 +3X2) avec eregi_replace pour remplacer dans 1 premier temps toutes les opérations de nombres entiers ou réels par leur évaluation.

ici par exemple le résultat souhaité serait de récupérer la chaine suivante en retour :
3X + 10 + 3X3 +2X3.

A vrai dire ce n'est pas l'expression reguliere qui pose pb mais plûtôt le fait de savoir comment utiliser la fonction eval dans le paramètre de remplacement dans eregi_replace: voici ma fonction:
Ici l'ERE ne reconnait que l'opération (5*2) dans mon cas.
$strresult = eregi_replace('\(([0-9]+(\.[0-9]+)?[\+\-\/\*][0-9]+(\.[0-9]+)?)\)',eval('$res=\'\1\';'),$eqString))
         
PB: là eval ne renvoit pas la chaine $res.Et ma question : y a t'il une autre fonction similaire qui pourrait convenir ? si oui la quelle? 

1 réponse

Messages postés
193
Date d'inscription
mercredi 24 août 2005
Statut
Membre
Dernière intervention
3 juin 2016

HOp la, si ça peut servir: 
J'ai pu contourner le pb de la manière suivante
while (ereg('\(([0-9]+(\.[0-9]+)?[\+\-\/\*][0-9]+(\.[0-9]+)?)\)',$eqString,$tab)){
         eval('$res='.$tab[1].';');
         $eqString = str_replace($tab[0],$res,$eqString);
     }
je sais que ça peut etre lourd  en proc de mettre une reg exp dans une boucle, mais bon.