Найти недостающие скобки в большом файле PHP? - PullRequest
6 голосов
/ 13 февраля 2012

Я отлаживаю 3500-строчный PHP-файл *1001* клиента.Включение этого файла приводит к ошибке PHP Parse error: syntax error, unexpected $end in ..., поэтому я предполагаю, что где-то отсутствует пропавшая скобка.Есть ли простой инструмент или метод для пропуска обнаружения скобок, в Интернете или в Komodo IDE, который я использую?

Ответы [ 7 ]

2 голосов
/ 16 октября 2012

Другой вариант (аналог Notepad ++) - использовать Dreamweaver для поиска соответствующего закрывающего тега.
См. Эту ссылку: Как настроить Dreamweaver для отображения закрывающих тегов?

в dreamweaver:
Чтобы выбрать соответствующие открывающие и закрывающие фигурные скобки, скобки или скобки,щелкните внутри открывающего или закрывающего символа и нажмите кнопку «Балансировочные скобки» на панели инструментов «Кодирование» (она находится сразу под «Выбрать родительский тег»).Или используйте сочетание клавиш Ctrl + '/ Cmd +'.

2 голосов
/ 13 февраля 2012

Используйте последовательные и чистые табуляции. Я обнаружил, что очень трудно пропустить закрывающую скобку.

Кроме этого, вы как бы вырыли здесь свою могилу. Что вы кодируете, что приводит к PHP-файлу на 3500 строк?

РЕДАКТИРОВАТЬ: попробуйте выгрузить свой код в Notepad ++. Я вполне уверен, что это выделит соответствующую закрывающую скобку, если вы нажмете на открывающую скобку, но с большими файлами я получил несколько ненадежную производительность с этим.

1 голос
/ 30 сентября 2014

Я просто работаю над связанной проблемой (найдите недостающую квадратную скобку массива в 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 голос
/ 30 апреля 2012

Komodo Edit имеет приятную функцию, которая выделяет то, что внутри фигурных скобок

Ctrl + Alt +]

0 голосов
/ 09 марта 2015

Мы действительно ценим, насколько все умны! Иногда лучше придерживаться инструмента, который использует человек, и именно того, о чем он спрашивает. Я не знаю, нашел ли ты свой ответ, но вот что я использую.

  1. Наведите курсор на открывающую скобку, затем -
  2. на Mac: [Command]

или меню «Правка»> «Балансировка» 3. Результат: это выделит код на Dreamweaver между фигурными скобками и поможет решить проблему с кодированием.

Надеюсь, это поможет. Постскриптум Иногда вам нужно 3000 строк кода:)

0 голосов
/ 13 февраля 2012

Использование среды IDE NetBeans для PHP.
http://netbeans.org/features/php/

Проверка вашего синтаксиса и выявление проблем среди множества других приятных функций, которые он имеет.И это бесплатно.

0 голосов
/ 13 февраля 2012

Какой текстовый редактор вы используете? Я порекомендую вам использовать Eclipse, и его будет намного легче обнаружить :) или вы также можете опубликовать свой код, и мы можем помочь вам таким образом:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...