Я работаю над проектом, который требует от меня найти все функции в нескольких сотнях файлов php и вернуть номер строки, в которой функция была впервые создана, а также номер строки, на которой функция закрывается. Весь файл загружается в виде строки, и каждая строка в файле начинается с номера строки. Я нашел число, с которого начинаются функции, и в переменных оно содержит имя функции, что означает, что я могу установить шаблон, но, похоже, не могу сузить способ выяснить, где он заканчивается.
Часть строки может выглядеть примерно так:
Line11 blah blah blah Line12 function doSomething ( $foo, $fab ) Line13 { Line14 ... Line15 { Line16 ... Line18 ... Line19 ... Line21 if (... ) Line22 ... ( ... ); Line23 break; Line24 } Line25 die ( ... ); Line26 } Line27 Blah Blah Blah
В этом случае мне нужно знать, что функция заканчивается в строке 26.
Я пытался использовать функцию для получения числа путем сопоставления надежных шаблонов на каждой стороне:
функция поиска строк между шаблонами:
function get_string_between($string, $start, $end){
$string = ' ' . $string;
$ini = strpos($string, $start);
if ($ini == 0) return '';
$ini += strlen($start);
$len = strpos($string, $end, $ini) - $ini;
return substr($string, $ini, $len);
}
$name = 'doSomething';
$paradigm = '$foo, $fab';
$start = 12;
$mess = 'Line'.$start.'function'.$name.'('.$paradigm.')'.'/\{([^{}]|(?R))*\}/'.' Line';
$lineNum = get_string_between($string, $mess, ' ');
echo $lineNum;
Я ожидал вывода 26
, но в настоящее время он ничего не возвращает.