Следующая статья: Парсинг HTML на PHP
Ошибки данного типа говорят о том, что автор скрипта, вероятнее всего, где-то опечатался. В общем виде выглядят примерно так:
Parse error: parse error *описание ошибки* in *локальный путь до скрипта с ошибкой* on line *номер строки с ошибкой*
Возможен и сокращённый вариант
Parse error: parse error in *локальный путь до скрипта с ошибкой* on line *номер строки с ошибкой*
Основные проблемы при устранении таких ошибок сводятся к двум:
- Найти строку, на которую указывает интерпретатор (для пользователей Блокнота, или любого редактора, который при автопереносе заменяет настоящий номер строки)
- Найти строку, в которой РЕАЛЬНО произошла ошибка. Обычно это либо заявленная в сообщении строка, либо одна из строк лежащих выше. Например следующий
код:
echo 'Привет!' // В РНР оказывается есть коментарии! // Ну нифига себе! echo 'Пока!';
Выдаст ошибку: Parse error: parse error, expecting ',' or ';' in * локальный путь * on line 6, хотя реально ошибка допущена в первой же строчке! (пропущена ; )
Ещё хуже дело обстоит с пропуском фигурных скобок. Дело в том, что с точки зрения PHP запись
for ($i==0;$i<10;$i++) echo 'I='; … КОД … echo $i; }
Содержит ошибку в 5 строке, а именно - лишнюю закрывающую скобку. Для интерпретатора код звучит примерно так:
- Десять раз печатаем echo 'I=';
- Выполняем КОД
- Печатаем echo $i;
- А это ещё что за }?!
А ведь КОД может иметь не один десяток строк…
И совсем отдельная песня - кавычки. Во первых - кавычку можно пропустить:
<?php echo 'Переменные:; echo $a; echo $b; // Ну нифига себе! // А код может быть длинный! echo $c; echo $d; echo 'Пока!'; ?>
Скрипт вызовет ошибку только в восьмой строке, хотя пропустили кавычку вы в первой.
Во-вторых кавычки можно перепутать, поскольку их в РНР два вида - " и ' :
<?php echo 'Переменные:'; echo $a; echo $b; // Ну нифига себе! // А код может быть длинный! echo $c; echo $d; echo 'Пока!'; ?>
Скрипт опять вызовет ошибку только в восьмой строке, хотя вы и закрыли кавычку - правда не ту, что открыли.
Ну и наконец, можно напечатать что-то вроде:
echo '<table border="0" width="780" align="center">';
и головная боль вам обеспечена.
А правильно так:
1. echo '<table border="0" width="780" align="center">';
Вот вроде и всё.
Напоследок несколько советов:
- Используйте редакторы с подсветкой - незакрытые кавычки они вам продемонстрируют.
- Все циклы, операторы выбора и тому подобное. оформляйте «лесенкой», это позволит быстро найти пропущенную скобку.
- Будьте бдительны :)