Un utilisateur est autorisé à entrer toute équation mathématique qu'ils aiment (avec une variable):processus équations mathématiques en php
x + 5
1 - x/2
(x/3) * (56/13)
Ceux-ci sont stockés sous forme de chaînes de caractères dans la base de données. Quand ils sont récupérés, je dois remplacer «x» par un nombre et vérifier la valeur de l'équation.
Comment est-ce que je pourrais faire ceci? Je pensais écrire un analyseur pour déconstruire les chaînes et les transformer en équations, mais cela semble cher et problématique. L'autre option est de les faire passer par eval (mais je ne suis pas un grand fan d'utiliser eval si je peux l'aider).
Des idées?
MISE À JOUR: Je dois également pouvoir obtenir la valeur booléenne de quelque chose comme "(x> 5)". Ce n'est pas possible avec evalMath
MISE À JOUR 2: Je dois tirer lots par seconde. J'ai regardé dans eval en php mais ne peux pas l'obtenir pour renvoyer un booléen pour (5> 4) cependant j'ai remarqué que js le ferais ... peut-être je devrais étudier node.js ...
MISE À JOUR 3: Après avoir du plaisir d'essayer Node.js (et de le faire travailler) Je suis retourné et ai eval pour travailler en PHP voir: Can php eval return a boolean value?
Alors je vais aller avec eval avec un filtre très très hardcore sur l'entrée de l'utilisateur.
Si vous avez besoin de faire des choses plus complexes, WolframAlpha offers an API pour les développeurs. – TheMagician
@TheMagician Bonne idée, mais malheureusement, ils doivent être déclenchés très souvent (des milliers d'entre eux par seconde), donc une API externe ne va pas fonctionner. –