Использование регулярных выражений для разбора функций из строки в PHP - PullRequest
3 голосов
/ 17 марта 2010

Есть ли логический способ вырезать имена функций и их аргументы, используя регулярные выражения в PHP? В настоящее время он разбивается по строкам, поэтому для облегчения разметки я могу разместить каждую функцию в каждой строке.

Итак:

doSomeFunction(arg, moreargs, stuff);
breakSomething();
ini_set(include_path, /home/htdocs/);

становится

array([0] => 'doSomeFunction(arg, moreargs, stuff);', [1] => 'breakSomething();' and so on...

Реальная проблема, с которой я сталкиваюсь, заключается в получении имени функции с помощью регулярных выражений, имеющего такой синтаксис:

$functionfromregex($args);

Функции построены с использованием PHP-функции «Variable Function Name», так что это возможно. Аргументы воспринимаются как массивы, поскольку нет разумного способа склеить их так, как PHP должен их анализировать. Настоящим недостатком является то, что я не слишком знаком с регулярными выражениями, любая помощь будет принята с благодарностью, и если вам нужна любая другая информация, не стесняйтесь спрашивать.

Ответы [ 3 ]

5 голосов
/ 17 марта 2010

Если вы хотите проанализировать PHP, вы можете использовать token_get_all, чтобы получить токены данного кода.

1 голос
/ 17 марта 2010

Вы также можете заглянуть в класс Reflection .

0 голосов
/ 05 сентября 2013

Так что я не уверен в php, я делаю что-то похожее в java, и следующий код удаляет его аналогичным образом:

[^ (&& [^) && [^,]]] применительно к foo (param1, param2, param3) вернет ["foo", "param1", "param2", "param3"].

Проблема, с которой я сталкиваюсь, заключается в том, что это выстроит все '(' и ')', поэтому нет никакого способа определить, является ли ваш параметр переменной или методом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...