繁体   English   中英

php运行javascript代码

[英]php run javascript code

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

在正常情况下:

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

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


至少在PHP扩展上嵌入(或包装arround) Javascript引擎,因此,允许用户在PHP上执行Javascript。

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

当然,像任何其他PHP扩展一样,您需要成为服务器的管理员才能安装它 - 并且默认情况下永远不会安装此服务器,因为它满足了非常具体的需求。


关于这个扩展,我从来没有看到它在实际情况下使用,并没有很多人尝试过它...这里有两篇你可能想读的文章:

试试这个

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

将你的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);

还有J4P5

我不知道它是否仍然保留,但你可以随时分叉,它是在GPL许可下发布的。

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

从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

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

node a.js

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM