找到正则表达式

时间:2018-06-05 08:24:22

标签: php regex

有一行包含:

function dekorator($func, $agrs = [])
{
    if (dd){
        var_dump("dekorators");

        $func();
    }
}

if (true)
{
    @dekorator
    function test()
    {
        if (ss){
            var_dump("tests");
            while(){
                dd
            }
        }
    }

    function dgdg()
    {
        var_dump("ff");
    }

    test();
}

我需要得到以下内容:

  1. 功能名称
  2. 功能参数
  3. 函数体(引号{}内部仅与...相关 功能)
  4. 我写了一个正则表达式:

    /function?\s+(\w+)*\(([^\)]*)\).*?\{([^\}]+[^\{]+)\}/sim
    

    但有一个BUT,它捕获的最后一个函数不是引号(不涉及函数本身)

    功能本身:

    function dgdg()
    {
        var_dump("ff");
    }
    

    多余:

        test();
    }
    

    DEMO https://regex101.com/r/MTS1pr/1/

1 个答案:

答案 0 :(得分:1)

使用此表达式:

function\s+(\w*)\s*\((.*?)\)\s*(\{((?>[^{}]+|(?3))*)\})

演示: https://regex101.com/r/o0t3fY/2

相关问题