2011-05-11 35 views
5

Estoy buscando un mini lenguaje de scripts que se ejecute en php, necesito interpretar fórmulas simples (algo que un lenguaje de scripting para una hoja de cálculo podría hacer). Lo principal que necesito es Variables y afectación y condiciones de operaciones matemáticas y declaración if.mini lenguaje de script en la parte superior de php

ejemplo:

si (price1> 360) resultado = (price1 * Q) + price1 * Q/17 otra cosa ...

+4

¿Por qué no escribir PHP entonces? Agregar más capas de idioma solo ralentiza las cosas. –

+0

o un marco? – Gal

+0

Necesito limitar lo que el usuario puede hacer, y quiero convertirlo a un idioma que no sea inglés. – Ayoub

Respuesta

2

le sugiero que tome un vistazo a algunos de los conceptos utilizado en un sistema de plantilla como Smarty e implemente el suyo propio. Por ejemplo, la math template le permite realizar operaciones como esta:

{* $height=4, $width=5 *} 
{math equation="x + y" x=$height y=$width} 

Usted puede simplemente agarrar el math functions from here, si desea una guía general de cómo crearlos. Todavía existe el riesgo de problemas ya que esto usa eval() para hacer los cálculos.

Además, here is a class para evaluar RPN (Notación inversa polaca) para admitir los operadores: +, - , *, /, IF, THEN, SWAP, DUP, =, <>, >, <. >= y <=.

+1

+1 RPN es increíble – Ryan

1

Bueno, también podría escribir estos pequeños scripts en PHP y ejecutarlos usando eval. Pero, como esto es como abrir la caja de Pandora, realmente debes saber que puedes confiar en el código que se pasa, antes de considerar esto como una opción viable (es decir, es peligroso, en realidad, especialmente si los usuarios ingresan estas fórmulas; yo lo haría nunca utilícelos cuando los usuarios proporcionen el código que se ejecutará).

Otra opción (probablemente más segura) sería utilizar algún tipo de intérprete de JavaScript para ejecutar los fragmentos. Hay 2 proyectos de PHP que conozco que podrían ser útiles (aunque parezcan estar en hibernación): j4p5 y phpjs. Si puede instalar extensiones, entonces PECL with SpiderMonkey podría ser una mejor opción.

1

Puede utilizar un intérprete incorporado, p. Javascript como http://phpjs.berlios.de/ o envolver llamadas de línea de comando al mono araña.

Cuestiones relacionadas