Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: как найти все функции?
 
 автор: г о с т ь   (29.03.2010 в 10:49)   письмо автору
 
 

есть php-файл, который нельзя выполнять, но надо узнать какие функции он использует.

т.е. допустим

<?
include 'functions.php';

phpinfo();

database();

reg();

?>


вот мне надо список функций "phpinfo", "database", "reg"

есть ли спец функция? или регуляркой как-то?

заранее спасибо..

  Ответить  
 
 автор: DJ Paltus   (29.03.2010 в 11:49)   письмо автору
 
   для: г о с т ь   (29.03.2010 в 10:49)
 


$arr = get_defined_functions();
print_r($arr['user']);

  Ответить  
 
 автор: г о с т ь   (29.03.2010 в 12:12)   письмо автору
 
   для: DJ Paltus   (29.03.2010 в 11:49)
 

функции не объявлены!


пока написал регулярку

`([a-z_]+)\(.*?\)`uis

  Ответить  
 
 автор: Balamut182   (29.03.2010 в 13:31)   письмо автору
 
   для: г о с т ь   (29.03.2010 в 12:12)
 

а если все функции запихать в класс, загрузить его и через method_exist() ?

  Ответить  
 
 автор: DJ Paltus   (29.03.2010 в 14:15)   письмо автору
 
   для: г о с т ь   (29.03.2010 в 12:12)
 

<?
    $f 
file_get_contents("functions.php");
    
$arr preg_split("/function/i"$f);  //дает осечку, если в названии функции есть паттерн "function"
    
foreach ($arr as $s$found[] = substr($s0strpos($s"{"));
    
print_r($found);

  Ответить  
 
 автор: Balamut182   (29.03.2010 в 14:23)   письмо автору
 
   для: DJ Paltus   (29.03.2010 в 14:15)
 

по моему через класс быстрее, чем регуляркой каждую строку скрипта проверять

  Ответить  
 
 автор: DJ Paltus   (29.03.2010 в 14:34)   письмо автору
 
   для: Balamut182   (29.03.2010 в 14:23)
 

Может быть. Если разница в пару миллисекунд критична, предлагайте вариант.
И обратите внимание, что каждую строку я не проверяю, это убыточный вариант:
<?
function

fname(){...}

и все, не поймается имя функции.
Я получаю содержимое файла в виде строки, делю его на куски между словами "function" (регистронезависимо), после чего просто ищу начало описания функции от начала каждой строки. Регвыром обрабатывается только одна большая строка.

  Ответить  
 
 автор: Balamut182   (29.03.2010 в 14:45)   письмо автору
 
   для: DJ Paltus   (29.03.2010 в 14:34)
 

мы предложили, пусть выбирает :)

  Ответить  
 
 автор: г о с т ь   (29.03.2010 в 22:28)   письмо автору
 
   для: г о с т ь   (29.03.2010 в 10:49)
 

спасибо за ответы.

"functions.php" не надо смотреть.

в общем оставил свою регулярку.. пусть так пока будет.

  Ответить  
 
 автор: DJ Paltus   (30.03.2010 в 09:36)   письмо автору
 
   для: г о с т ь   (29.03.2010 в 22:28)
 

Вот теперь я вообще не понял. Подключать ты его подключаешь, а функции у тебя не объявлены ВДРУГ. И смотреть его не надо, оказывается.
В чем был вопрос?

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования