Прямо сейчас у меня есть скрипт, который использует токенизатор PHP для поиска определенных функций в файле исходного кода PHP.Шаблон, который я сейчас ищу:
T_STRING + T_WHITESPACE (необязательно) + "("
. Похоже, это пока соответствует всем моим тестам, кроме переменных функций, которые я игнорируюдля целей этого вопроса.
Очевидная проблема здесь состоит в том, что этот шаблон производит много ложных срабатываний, например, соответствия определений функций:
public function foo() { // foo() should not be matched
Мой вопрос таков: есть более надежный / точный метод для просмотра исходного кода и удаления всех вызовов функций? Может быть, лучший способ, чем вообще использовать токенизатор?
Редактировать:
В частности, я пытаюсь эмулировать функциональность disable_functions
PHP-директивы в файле класса . Поэтому, если exec()
следует запретить, я пытаюсь найти любойиспользование этой функции в анализируемом файле. Я понимаю, что переменные функции делают это ужасно трудным, поэтому я их обнаруживаю и запрещаю.