Получить / захватить все variableNames и значения из строки JavaScript

Итак, у меня есть большой файл .js, и я хочу получить все переменные, определенные в нем, со значениями. Я хочу сделать это из PHP (если бы это был JS, это было бы легко).

Так, например, у меня есть этот код:

var var1="var value";
var var2={
something:'value'
};
window.var3 = 80+100
;var4='another var value';

Я должен получить список, как это:

  1. переменная «var1» со значением: «значение var»
  2. переменная «var2» со значением: {нечто: «значение»}
  3. переменная «var3» со значением: 80 + 100
  4. переменная «var4» со значением: «другое значение var»

Я пытался сделать это с помощью регулярного выражения, но я не могу найти регулярное выражение, которое гарантирует захватить все.

Вот некоторые проблемы, с которыми я столкнулся:

  1. линия может быть завершена без;
  2. фактическое значение может содержать;
  3. не может быть значения (например, var variable1;)

Вот регулярное выражение, которое я сделал:

/(?:var[\s]+|window\.){0,1}([^;\s]*)(?:\s*)=(?:\s*)([^;]*)(?:\s*);{0,1}/i

У кого-нибудь другой подход? Или лучшее регулярное выражение?

Я также думал об использовании PHP-библиотеки, которая интерпретирует JS: J4P5 или же V8js

Спасибо

0

Решение

Чтобы действительно быть уверенным, что вы перехватываете все содержимое переменной, вам определенно потребуется использовать анализатор JS, запустить код и затем вывести полный контекст переменной из анализатора. В конце концов, у вас также могут быть такие вещи:

var whatever = (function() { return 4; })();

Это совершенно правильный javascript, может произойти и обычно более сложный, чем просто возврат.

Однако выполнение кода имеет некоторые проблемы с безопасностью, если это код, предоставленный пользователем, поскольку кто-то может, например, легко включить вызовы внешних ресурсов в код. Так что здесь нужна особая осторожность.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]