我正在从事一个项目,该项目需要我在数百个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
,但目前它不返回任何内容。