例如
function hello(){
echo 'hello';
foreach (array(1,2,3) as $n)
{
echo $n;
}
echo 'bye-bye';
echo 'bye-bye';
echo 'bye-bye';
}
function hi(){}
我需要外部花括号之间的所有内容,忽略任何内部花括号,所以我的结果不会像那样
{
echo 'hello';
foreach (array(1,2,3) as $n)
{
echo $n;
}
或
{
echo 'hello';
foreach (array(1,2,3) as $n)
{
echo $n;
}
echo 'bye-bye';
echo 'bye-bye';
echo 'bye-bye';
}
function hi(){}
答案 0 :(得分:1)
在一般情况下,这不适用于正则表达式。您将需要使用为该任务设计的解析器,或者编写您自己的解析器。
对于基本功能,您不需要太多:一次读取一个字符,记住您在任何一个点上有多少未闭合的括号,并在此数字从1减少到0时考虑完成解析。
下一步是识别常见的字符串文字(单引号和双引号)并正确跳过这些字符串中的任何文字括号,这足以让你获得90%的支持。
更新: here's an asnwer类似的问题还包括示例代码(尽管它是用C#而不是PHP)。