在 PHP 中执行 javascript

2022-08-30 22:48:00

我正在使用PHP生成典型的Web 2.0 HTML页面:它包含许多标签和javascript代码,这些代码将在加载事件后实质性地改变DOM。<script>

有没有办法直接从PHP获取最终的HTML代码,而无需使用任何浏览器打开页面?

例如,假设页面的HTML是(这只是一个例子):

<html>
<head>
<script>...the jquery library code...</script>
<script>$(document).ready(function() { $("body").append("<p>Hi!</p>");</script>
</head>
<body>
</body>
</html>

此 HTML 保存在 PHP 变量中。现在,我想将该变量传递给某个将返回$result = 的函数。$html<html>....<body><p>Hi!</p></body></html>

这可能吗?

编辑:由于你们中的许多人对我的要求感到困惑,我将解释原因。不幸的是,用户面临的一切都是用javascript制作的,这使得网站无法被搜索引擎抓取。因此,我想向他们发送准备就绪后的事件 HTML 代码。


答案 1

使用PHP评估JavaScript代码,请查看V8 JavaScript引擎扩展,您可以将其编译为PHP二进制文件:

V8是Google的开源JavaScript实现


答案 2

我能找到的最好的解决方案是在服务器上使用HtmlUnit http://htmlunit.sourceforge.net/,使用javascript执行你的html,并取回用户在浏览器上看到的最终html。

该库对JavaScript有很好的支持,并且是无外设的,所以你应该能够在服务器上运行它。

您需要编写一个小的Java包装器,该包装器可以通过命令行接受输入并将其传递到HtmlUnit上进行处理,然后将结果返回给您。然后,您可以从PHP调用此包装器。