2010-11-18 4 views
2

Est-il possible de calculer une fonction mathématique f (x) que dans une chaîne. Quelque chose comme ceci:PHP: calculer une fonction mathématique f (x) dans une chaîne

$function = '2x+3'; 
$x = 4; 
math_function($function, $x); //Shoud produce 11 

Je ne peux pas trouver une bibliothèque pour des tâches comme celle-ci sur PHP.net ou avec Google, mais je ne pense pas que je suis le premier qui veut que ce soit?

Répondre

3

Ma réponse standard à cette question chaque fois qu'il affleure:

Ne pas utiliser eval (surtout si la formule contient l'entrée d'utilisateur) ou réinventer la roue en écrivant votre propre analyseur de formule.

Jetez un oeil à la classe evalMath sur PHPClasses. Il devrait faire tout ce que vous voulez dans un joli bac à sable sécurisé.

+0

+1 ... Construction d'un analyseur de formule mathématique est un problème académique (car il y a beaucoup de bord des cas bien définis, qui donnent à une solution non-triviale). Mais en termes de problème pratique, ça n'en vaut pas la peine car il y a des outils pour cela ... – ircmaxell

+0

Wow, c'était rapide! Merci beaucoup. Je ne connaissais même pas l'existence d'eval()! Je vais y jeter un coup d'oeil. – Woutb21

+0

Je suis confus: Vous dites "Ne pas utiliser Eval" et ensuite conseiller l'utilisation d'une classe qui fait exactement cela. (Réponse Toujours parfaitement valide qui résout le problème ops donc +1, même si le code evalMath me fait envie de vomir;.)) – edorian

Questions connexes