【问题标题】:mini scripting language on top of php基于 php 的迷你脚本语言
【发布时间】:2011-08-23 14:18:23
【问题描述】:

我正在寻找一种在 php 上运行的迷你脚本语言,我需要解释简单的公式(电子表格的脚本语言可以做到这一点)。我需要的主要是变量和做作以及数学运算条件和 if 语句。

前:

如果(价格1>360) 结果 = (price1 * Q) + price1 * Q /17 否则...

【问题讨论】:

  • 那为什么不直接写PHP呢?添加更多的语言层只会减慢速度。
  • 我需要限制用户可以做什么,我想把它转换成非英语语言。
  • 框架对我有什么帮助?
  • @Ayoub 你可以在这里阅读它en.wikipedia.org/wiki/Software_framework
  • @sombe 我不会用它来构建应用程序,但在部分应用程序中,用户将输入带有条件的简单数学公式

标签: php scripting programming-languages embedded


【解决方案1】:

我建议你看看模板系统中使用的一些概念,比如Smarty,并实现你自己的。例如,math template 允许您执行如下操作:

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

如果您想了解如何创建它们的一般指南,您可以直接获取 math functions from here。仍然存在问题的风险,因为它使用eval() 进行计算。

此外,here is a class 评估 RPN(逆波兰表示法)以支持运算符:+, - , *, /, IF, THEN, SWAP, DUP, =, <>, >, <. >=<=

【讨论】:

    【解决方案2】:

    好吧,您也可以用 PHP 编写这些小脚本并使用 eval 执行它们。但是,由于这就像打开潘多拉的盒子,你应该真的知道你可以信任传递的代码,然后再考虑这是一个可行的选择(即它很危险,真的,特别是如果这些公式是由用户输入的 - 我会从不在用户提供要执行的代码时使用它们)。

    另一种选择(可能更安全)是使用某种形式的 javascript 解释器来执行 sn-ps。我知道有 2 个 PHP 项目可能会有所帮助(即使它们似乎处于休眠状态):j4p5phpjs。如果您可以安装扩展,那么 PECL with SpiderMonkey 可能是一个更好的选择。

    【讨论】:

      【解决方案3】:

      您可以使用嵌入式解释器,例如像 http://phpjs.berlios.de/ 这样的 Javascript 或包装对蜘蛛猴的命令行调用。

      【讨论】:

        猜你喜欢
        • 2011-06-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-12
        • 2016-01-24
        • 2012-09-02
        • 2019-05-24
        相关资源
        最近更新 更多