在大型PHP文件中查找缺失大括号?

问题描述:

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

+3

3000行文件?育。 http://stackoverflow.com/questions/378959/is-there-a-static-code-analyzer-like-lint-for-php-files – Frankie 2012-02-13 18:43:27

+0

在大多数IDE中,您可以通过查找所需的位置找到丢失的大括号每一行都会变成错误。 – 2012-02-13 18:44:44

+0

NetBeans :)多数民众赞成在我脑海中。 。 。 – tomexsans 2012-02-13 18:45:55

使用一致且干净的标签。我发现这使得很难错过右大括号。

除此之外,你有点在这里挖掘自己的坟墓。你编码的结果是一个3500行PHP文件?

编辑:尝试将代码转储到记事本++。我相当肯定,如果你点击开始的大括号,会突出显示相关的大括号,但是对于较大的文件,我得到的性能有些不可靠。

+0

Tory-不错的建议,如果你出生自己的代码,但这是客户端代码,而不是我 - 我只是作为顾问跳伞。 – Yarin 2012-02-13 19:09:48

+1

这不考虑替代格式'if(true):else:endif;' – Ray 2012-06-28 15:38:21

您使用的是哪种文本编辑器?我会推荐你​​使用Eclipse,它会更容易检测它:)或者你也可以公开你的代码,并且可以通过这种方式提供帮助:)

+0

我正在使用Komodo IDE,因为它是专有的客户端代码,所以我无法公开代码。 – Yarin 2012-02-13 19:06:47

+0

我不确定Komodo IDE如何工作,但我强烈建议您使用php,javascript,html ...开始使用Eclipse [HERE](http://www.eclipse.org/downloads/)或您可以通过电子邮件发送给我你的代码=] [email protected]这是我所能做到的:) – 2012-02-14 14:27:52

使用NetBeans IDE for PHP。
http://netbeans.org/features/php/

将检查你的语法,并突出其中许多其他不错的功能问题。它是免费的。

科莫多编辑有一个很好的功能,突出了里面有什么牙套

按Ctrl + Alt +]

另一种选择(类似记事本+ +)是使用Dreamweaver中找到相关的结束标记。
请参阅此链接:How do I make Dreamweaver to show me closing tags?

在Dreamweaver:
要选择匹配的开启和关闭大括号,括号或小括号,点击打开或关闭符号内,并单击平衡括号中的编码工具栏上的按钮(这是选择父标签下面)。或者,使用键盘快捷键Ctrl +'/ Cmd +'。

我只是在处理一个相关的问题(在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.'; 

这个回声源直到有一个错过匹配和一个大括号错误。

我们真的很感激每个人都有多聪明!有时候最好坚持使用这个人使用的工具,并且确切地说他们在问什么。我不知道你是否找到了你的答案,但这里是我使用的。

  1. 放在左括号光标然后 -
  2. 在Mac: [命令]”

或编辑菜单>平衡大括弧 3.结果:这将突出显示在Dreamweaver中的代码在大括号之间并帮助解决编码问题。

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