|
|
|
| есть php-файл, который нельзя выполнять, но надо узнать какие функции он использует.
т.е. допустим
<?
include 'functions.php';
phpinfo();
database();
reg();
?>
|
вот мне надо список функций "phpinfo", "database", "reg"
есть ли спец функция? или регуляркой как-то?
заранее спасибо.. | |
|
|
|
|
|
|
|
для: г о с т ь
(29.03.2010 в 10:49)
| |
$arr = get_defined_functions();
print_r($arr['user']);
|
| |
|
|
|
|
|
|
|
для: DJ Paltus
(29.03.2010 в 11:49)
| | функции не объявлены!
пока написал регулярку
| |
|
|
|
|
|
|
|
для: г о с т ь
(29.03.2010 в 12:12)
| | а если все функции запихать в класс, загрузить его и через method_exist() ? | |
|
|
|
|
|
|
|
для: г о с т ь
(29.03.2010 в 12:12)
| |
<?
$f = file_get_contents("functions.php");
$arr = preg_split("/function/i", $f); //дает осечку, если в названии функции есть паттерн "function"
foreach ($arr as $s) $found[] = substr($s, 0, strpos($s, "{"));
print_r($found);
|
| |
|
|
|
|
|
|
|
для: DJ Paltus
(29.03.2010 в 14:15)
| | по моему через класс быстрее, чем регуляркой каждую строку скрипта проверять | |
|
|
|
|
|
|
|
для: Balamut182
(29.03.2010 в 14:23)
| | Может быть. Если разница в пару миллисекунд критична, предлагайте вариант.
И обратите внимание, что каждую строку я не проверяю, это убыточный вариант:
и все, не поймается имя функции.
Я получаю содержимое файла в виде строки, делю его на куски между словами "function" (регистронезависимо), после чего просто ищу начало описания функции от начала каждой строки. Регвыром обрабатывается только одна большая строка. | |
|
|
|
|
|
|
|
для: DJ Paltus
(29.03.2010 в 14:34)
| | мы предложили, пусть выбирает :) | |
|
|
|
|
|
|
|
для: г о с т ь
(29.03.2010 в 10:49)
| | спасибо за ответы.
"functions.php" не надо смотреть.
в общем оставил свою регулярку.. пусть так пока будет. | |
|
|
|
|
|
|
|
для: г о с т ь
(29.03.2010 в 22:28)
| | Вот теперь я вообще не понял. Подключать ты его подключаешь, а функции у тебя не объявлены ВДРУГ. И смотреть его не надо, оказывается.
В чем был вопрос? | |
|
|
|