【问题标题】:Find missing braces in large PHP file?在大型 PHP 文件中查找缺少的大括号?
【发布时间】:2012-02-13 18:40:20
【问题描述】:

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

【问题讨论】:

  • 3000 行文件?玉。 stackoverflow.com/questions/378959/…
  • 在大多数 IDE 中,您可以通过查找每一行出现错误的位置来找到丢失的大括号。
  • NetBeans :) 这就是我的想法。 . .
  • 使用 vi,您可以简单地使用 % 在括号上弹跳并查看不再对齐的地方。
  • 复制文件并注释/删除部分代码,直到您没有收到任何投诉。这使得调试更容易只要确保如果你真的做了一些事情(比如修改数据库/文件),你也会删除该代码,这样你就不会弄乱任何东西。

标签: php debugging ide syntax-error


【解决方案1】:

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

除此之外,你在这里有点自掘坟墓。你在编写什么代码会产生一个 3500 行的 PHP 文件?

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

【讨论】:

  • Tory- 如果您自己编写代码,建议很好,但这是客户代码,不是我的- 我只是作为顾问跳伞。
  • 这不考虑备用格式if(true): else: endif;
【解决方案2】:

另一个选项(类似于 notepad++)是使用 Dreamweaver 查找关联的结束标记。
见此链接:How do I make Dreamweaver to show me closing tags?

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

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      【解决方案4】:

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

      Ctrl+Alt+]

      【讨论】:

        【解决方案5】:

        我正在解决一个相关问题(在 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.'; 
        

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

        【讨论】:

        • 您愿意解释一下这是什么以及如何使用它吗?
        【解决方案6】:

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

        【讨论】:

        • 我正在使用 Komodo IDE,由于它是专有的客户端代码,因此无法公开代码。
        • 我不确定 Komodo IDE 是如何工作的,但我强烈建议您使用 php、javascript、html... 开始使用 Eclipse HERE 或者您可以通过以下方式将您的代码发送给我电子邮件 =] sa18890@seeu.edu.mk 这就是我能做的:)
        【解决方案7】:

        我们非常感谢每个人的聪明才智!有时最好坚持人们正在使用的工具以及他们正在询问的确切内容。我不知道你是否找到了答案,但这是我使用的。

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

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2019-03-10
          • 1970-01-01
          • 2021-10-17
          • 1970-01-01
          • 2012-11-13
          • 2013-05-27
          • 1970-01-01
          相关资源
          最近更新 更多