【发布时间】:2017-05-16 10:42:53
【问题描述】:
所以,我有一个大的 .js 文件,我想获取其中定义的所有变量以及值。我想用 PHP 来做这个(如果是 JS,那就很容易了)。
所以,例如,我有这个代码:
var var1="var value";
var var2={
something:'value'
};
window.var3 = 80+100
;var4='another var value';
我应该得到一个这样的列表:
- 变量“var1”,值为:“var value”
- 具有值的变量“var2”:{something:'value'}
- 变量“var3”,值为:80+100
- 具有值的变量“var4”:'另一个 var 值'
我试图使用正则表达式来做到这一点,但我找不到保证捕获所有内容的正则表达式。
以下是我遇到的一些问题:
- 可以在没有 ; 的情况下终止行
- 实际值可以包含;
- 可能没有值(例如
var variable1;)
这是我制作的正则表达式:
/(?:var[\s]+|window\.){0,1}([^;\s]*)(?:\s*)=(?:\s*)([^;]*)(?:\s*);{0,1}/i
有没有人有不同的方法?还是更好的正则表达式?
我也在考虑使用解释 JS 的 PHP 库:J4P5 或 V8js
谢谢
【问题讨论】:
-
使用正则表达式从 js 脚本中提取变量及其值几乎是不可能的,陷阱太多:cmets、字符串、文字正则表达式 (这是最难处理的),嵌套括号。如果没有解析器,您将无法做到这一点。
标签: javascript php regex interpreter