首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用PHP解释JavaScript

用PHP解释JavaScript
EN

Stack Overflow用户
提问于 2010-12-02 05:19:51
回答 3查看 3K关注 0票数 15

我希望能够运行JavaScript并使用PHP获得结果,并且想知道是否有一个PHP库允许我解析它。我的第一个想法是使用node.js,但由于node.js可以访问套接字、文件和其他东西,我想我更愿意避免这样做。

的基本原理:--我正在用进行屏幕抓取,并且遇到了许多情况,其中的数据是由JavaScript在前端生成的,我想避免编写专门的过滤函数,以便在每个案例的基础上对JavaScript进行操作,因为这需要很多时间。更一般的情况是直接解析JavaScript。

否决:--我不知道这个问题有什么争议,现代的网络爬虫都知道,唯一的区别是它们往往不是用PHP编写的。1

1

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-12-04 23:53:17

这是一个有趣的问题,选民对潜在的用例缺乏想象力。页面归档工具、打印脚本、预览图像--所有想要使用页面中包含的JavaScript操作文档的有效理由。

我不知道现有的任何PHP实现,但是您可能可以将Mozilla的SpiderMonkey修改为一个PHP模块,或者作为一个独立的工具来操作一个DOMDocument并返回结果。

我还没有使用服务器端JavaScript的经验,但我认为可能需要处理一些问题:

  • documentwindow这样的宿主对象不是ECMAScript规范的一部分(这些对象是由实现浏览器提供的),因此您需要确保库提供了等效的宿主对象。
  • 在服务器端环境中执行客户端脚本时可能会出现安全问题。这很像允许用户提交一个PHP脚本来进行评估,所以您需要确保安全沙箱是紧的。

另一个(可能)更安全、更容易实现的选项可能是使用作为浏览器运行的修改后的FireFox或WebKit实例,加载目标页面并将修改后的源代码返回到应用程序。

票数 6
EN

Stack Overflow用户

发布于 2013-10-21 10:45:12

从PHP5.3中可以使用PHP的V8JS扩展。它是一个本机库,它使用新的Google V8 Javascript引擎来执行JS并返回结果。

这很好,因为您可以在PHP数组中传递vars,并且可以很好地解释

票数 4
EN

Stack Overflow用户

发布于 2010-12-04 22:13:24

实际上,NodeJS (或谷歌v8的其他衍生产品)可能是最好的选择。如果你关心nodejs能做的各种事情(例如。(套接字等等),您可能可以通过删除模块和/或加载项来“剥离它”--我认为即使是内置的东西最终也是以这样一种方式实现的,这样就可以很容易地将其剥离掉。

另一种方法可能是简单地替换、重写或从require中删除node.js函数。

还有恩维,它可以使运行js变得更容易,而js是设计用来运行浏览器的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4331938

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档