guill76
Messages postés193Date d'inscriptionmercredi 24 août 2005StatutMembreDernière intervention 3 juin 2016
-
21 juin 2006 à 21:14
guill76
Messages postés193Date d'inscriptionmercredi 24 août 2005StatutMembreDernière intervention 3 juin 2016
-
21 juin 2006 à 23:04
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?
guill76
Messages postés193Date d'inscriptionmercredi 24 août 2005StatutMembreDernière intervention 3 juin 2016 21 juin 2006 à 23:04
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.