Итак, у меня есть большой файл .js, и я хочу получить все переменные, определенные в нем, со значениями. Я хочу сделать это из PHP (если бы это был JS, это было бы легко).
Так, например, у меня есть этот код:
var var1="var value";
var var2={
something:'value'
};
window.var3 = 80+100
;var4='another var value';
Я должен получить список, как это:
Я пытался сделать это с помощью регулярного выражения, но я не могу найти регулярное выражение, которое гарантирует захватить все.
Вот некоторые проблемы, с которыми я столкнулся:
var variable1;
)Вот регулярное выражение, которое я сделал:
/(?:var[\s]+|window\.){0,1}([^;\s]*)(?:\s*)=(?:\s*)([^;]*)(?:\s*);{0,1}/i
У кого-нибудь другой подход? Или лучшее регулярное выражение?
Я также думал об использовании PHP-библиотеки, которая интерпретирует JS: J4P5 или же V8js
Спасибо
Чтобы действительно быть уверенным, что вы перехватываете все содержимое переменной, вам определенно потребуется использовать анализатор JS, запустить код и затем вывести полный контекст переменной из анализатора. В конце концов, у вас также могут быть такие вещи:
var whatever = (function() { return 4; })();
Это совершенно правильный javascript, может произойти и обычно более сложный, чем просто возврат.
Однако выполнение кода имеет некоторые проблемы с безопасностью, если это код, предоставленный пользователем, поскольку кто-то может, например, легко включить вызовы внешних ресурсов в код. Так что здесь нужна особая осторожность.
Других решений пока нет …