2012-02-13 3 views
6

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

+3

3000 -строчный файл? ЮК. http://stackoverflow.com/questions/378959/is-there-a-static-code-analyzer-like-lint-for-php-files – Frankie

+0

В большинстве IDE вы можете найти отсутствующие фигурные скобки, ища место, где каждая отдельная строка становится ошибкой. –

+0

NetBeans :) Вот что я имею в виду. , , – tomexsans

ответ

2

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

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

EDIT: Попробуйте сбросить свой код в блокнот ++. Я уверен, что выделит связанную закрывающую фигуру, если вы нажмете на открывающий, но с более крупными файлами, с этим я получил несколько ненадежную производительность.

+0

Tory- Хороший совет, если у вас есть собственный код, но это код клиента, а не мой. Я просто парашют в качестве консультанта. – Yarin

+1

Это не учитывает альтернативный формат 'if (true): else: endif;' – Ray

0

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

+0

Я использую среду Komodo, и я не могу сделать код общедоступным, так как это проприетарный клиентский код. – Yarin

+0

Я не уверен, как работает Komodo IDE, но я настоятельно рекомендую вам для php, javascript, html ... начать работу с Eclipse [ЗДЕСЬ] (http://www.eclipse.org/downloads/) или вы может отправить мне ваш код по электронной почте =] [email protected] Это все, что я могу сделать :) –

0

Используйте среду NetBeans для PHP.
http://netbeans.org/features/php/

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

1

Komodo Edit имеет хорошую особенность, которая подчеркивает, что внутри брекет

Ctrl + Alt +]

2

другой вариант (подобный Notepad ++) заключается в использовании Dreamweaver, чтобы найти соответствующий закрывающий тег.
Смотрите эту ссылку: How do I make Dreamweaver to show me closing tags?

в Dreamweaver:
Чтобы выбрать соответствующие открытия и закрытия фигурные скобки, скобки, или скобки, нажмите внутри отверстия или закрывающего символа, и нажмите кнопку Balance брекеты на панели инструментов Coding (это сразу ниже Select Parent Tag). Кроме того, используйте комбинацию клавиш Ctrl + '/ Cmd +'.

1

Я просто работаю над связанной проблемой (найдите отсутствующую квадратную скобку массива в объекте 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.'; 

Это отгоняет источник, пока не появится совпадение пропусков и ошибка для фигурных скобок.

0

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

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

или Меню Edit> Баланс Брекеты 3. Результат: Это позволит выделить код на Dreamweaver между скобками и помочь решить проблему кодирования.

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

Смежные вопросы