在大型PHP文件中查找丢失的大括号


Find missing braces in large PHP file?

我正在调试客户端的3500行PHP文件。包含此文件会导致PHP Parse error: syntax error, unexpected $end in ...错误,所以我假设某个地方缺少大括号。有没有一个简单的工具或方法来发现缺失的括号,无论是在线还是在我使用的Komodo IDE中?

使用一致且干净的选项卡。我发现这让你很难错过最后一个大括号。

除此之外,你在这里有点自掘坟墓了。您对3500行PHP文件进行了哪些编码?

编辑:尝试将代码转储到Notepad++中。我敢肯定,如果你点击打开的大括号,它会突出显示相关的右大括号,但对于较大的文件,我的性能有些不可靠。

另一个选项(类似于notepad++)是使用Dreamweaver查找关联的结束标记
请参阅此链接:如何使Dreamweaver显示关闭标记?

在dreamweaver中:
要选择匹配的开头和结尾大括号、方括号或圆括号,请在开头或结尾符号内单击,然后单击"编码"工具栏上的"平衡大括号"按钮(位于"选择父标记"的正下方)。或者,使用键盘快捷键Ctrl+'/Cmd+'。

使用用于PHP的NetBeans IDE
http://netbeans.org/features/php/

将检查您的语法,并在它拥有的许多其他不错的功能中突出问题。而且是免费的。

Komodo Edit有一个很好的功能,可以突出显示括号内的内容

Ctrl+Alt+]

我正在处理一个相关的问题(在JSON对象中找到缺少的数组方括号)。所以我希望能够提供帮助。

     $pos=0;
     $braceCount=0;
while( preg_match('~'{|'}~S', $source, $out, PREG_OFFSET_CAPTURE, $pos) ){
     if($out[0][0] === '{'){
       $braceCount++;
       if( $braceCount === 1 )$startPos=$out[0][1];
     }
     elseif( $out[0][0] === '}' ){
       $braceCount--;
       if( $braceCount === 0 ){
         //echo 'Up to that position:'.$out[0][1].' every thing seems to be ok?<br>';
         echo substr($source,$startPos,($out[0][1]+1-$startPos)).'<br>';
       } 
       elseif( $braceCount < 0 ){
         echo 'To many closing brace right before '.($out[0][1]+1).'<br>';
         exit;
       }
     }
     $pos = $out[0][1]+1;
}
if( $braceCount > 0 ) echo 'Closing brace is missing somewhere.'; 

这将回显源,直到出现未匹配和大括号错误为止。

您使用的是什么文本编辑器?我建议您使用Eclipse,它将更容易检测:)或者您也可以公开您的代码,我们可以通过这种方式提供帮助:)

我们真的很感激每个人都这么聪明!有时,最好坚持使用这个人正在使用的工具,以及他们到底在问什么。我不知道你是否找到了答案,但这是我用的。

  1. 将光标放在打开的大括号上,然后-
  2. 在Mac上:[命令]'

或编辑菜单>平衡支架3.结果:这将突出显示Dreamweaver上大括号之间的代码,并有助于解决编码问题。

希望这能有所帮助。附言:有时你需要3000行代码:)