在PHP文件中查找模式并读取该模式之后的数字

时间:2019-06-19 15:36:18

标签: php regex string

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

0 个答案:

没有答案