【问题标题】:php run javascript codephp运行javascript代码
【发布时间】:2018-04-08 04:29:28
【问题描述】:

是否可以运行一些 javascript 表达式?例如echo eval("Math.sqrt('25')");

【问题讨论】:

  • PHP 运行在服务端,JS 运行在客户端。因此,不,PHP 不能运行 JS。
  • @nico JS 与平台无关,因此可以在任何地方运行。 node.js 是一个使用 JS 编写脚本的 Web 服务器。 AppJet 和 jGate 是其他示例。
  • @kim3er:当然可以,但是如果您要回显 JS,它将在客户端而不是服务器上运行。此外,我们没有任何迹象表明他可以访问服务器。
  • @nico 我想问题是问题含糊不清。草薙,你的目的是什么?在页面呈现后触发客户端脚本?或者,在服务器上运行 JS?
  • 我很确定您可以刚刚测试并发现它工作得很好。除非您将其发送回server-side,否则您不能在 php 中使用该值,但您可以回显将由客户端运行的 emca 脚本。

标签: php javascript


【解决方案1】:

正常情况下:

  • PHP 在服务器上运行
  • 然后,Javascript 在客户端、浏览器中运行。

所以,不,让 PHP 在服务器上执行一些 Javascript 代码是不太可能的。


但是至少有一个 PHP 扩展嵌入了 (或 wrap arround) Javascript 引擎,因此允许执行 Javascript在服务器上,来自 PHP。

我正在考虑的扩展是 spidermonkey 之一:在您的服务器上安装并启用它,将允许您在服务器上从 PHP 执行 Javascript 代码。

当然,与任何其他 PHP 扩展一样,您需要成为服务器的管理员才能安装它——默认情况下从不安装此扩展,因为它满足了非常特定的需求。


关于这个扩展,我从未见过它在实际情况中使用过,尝试过的人也不多……这里有两篇你可能想读的文章:

【讨论】:

【解决方案2】:

试试这个

echo "<script language='javascript'> Math.sqrt('25') </script>"

【讨论】:

    【解决方案3】:

    还有J4P5

    我不知道它是否仍在维护,但你可以随时 fork 它,它是根据 GPL 许可发布的。

    【讨论】:

      【解决方案4】:

      把你的 php 放到一个隐藏的 div 中,然后用 javascript 调用它

      html/php部分

      <div id="mybox" style="visibility:hidden;"> echo sqrt(25); </div>
      

      javascript部分

      var myfield = document.getElementById("mybox");
      myfield.visibility = 'visible';
      

      现在,你可以用 myfield 做任何事情......像这样

      alert(myfield);
      

      【讨论】:

        【解决方案5】:

        由于 PHP 是一种在服务器上运行的服务器端脚本语言,而 Javascript 是一种在浏览器中运行的客户端脚本语言,因此您必须让 PHP 生成 Javascript 代码(与生成 HTML 相同的方式)页面加载后执行。

        【讨论】:

          【解决方案6】:

          【讨论】:

            【解决方案7】:

            从 PHP 运行 JavaScript 代码

            php v8js:https://github.com/phpv8/v8js

            $v8 = new V8Js;
            $v8->executeString("Math.sqrt('25')"); // 5
            

            https://github.com/chenos/execjs

            use Chenos\ExecJs\Context;
            
            $cxt = new Context;
            $cxt->eval("Math.sqrt('25')"); // 5
            

            【讨论】:

              【解决方案8】:

              如果您的服务器上安装了节点,那么您可以使用 php 执行此命令

              node a.js
              

              然后使用 console.log 作为输出。

              【讨论】:

                猜你喜欢
                • 2017-01-16
                • 1970-01-01
                • 1970-01-01
                • 2016-12-17
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2013-08-04
                • 1970-01-01
                相关资源
                最近更新 更多