un usuario está autorizado a entrar en cualquier ecuación matemática que les gusta (con una variable):Proceso de ecuaciones matemáticas en php
x + 5
1 - x/2
(x/3) * (56/13)
Estos se almacenan como cadenas en la base de datos. Cuando se recuperan, necesito sustituir 'x' por un número y verificar el valor de la ecuación.
¿Cómo podría hacer esto?
Estaba pensando en escribir un analizador para deconstruir las cadenas y convertirlas en ecuaciones, sin embargo, esto parece costoso y problemático. La otra opción es pasarlos a través de eval (pero no soy muy fanático de usar eval si puedo evitarlo).
¿Alguna idea?
ACTUALIZACIÓN: También necesito poder obtener el valor booleano de algo así como "(x> 5)". Esto no es posible con evalMath
UPDATE 2: Necesito disparar lotes de estos por segundo. He estado buscando en eval en php pero no puedo obtener un booleano para (5> 4), pero noté que js lo haría ... quizás debería investigar node.js ...
UPDATE 3: Después de tener un poco de diversión de probar Node.js (y conseguir que funcione) volví y me eval para trabajar en PHP ver: Can php eval return a boolean value?
así que voy a ir con eval con un filtro muy, muy duro en la entrada del usuario.
Si necesita hacer cosas más complejas, WolframAlpha offers an API para desarrolladores. – TheMagician
@TheMagician Buena idea, pero desafortunadamente estos necesitan ser disparados muy a menudo (miles de ellos por segundo) por lo que una API externa no va a funcionar. –