Телефон: +7 (926) 245-03-63

Основные ошибки парсинга / Parse на PHP

Следующая статья: Парсинг 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">';

Вот вроде и всё.

Напоследок несколько советов:

  • Используйте редакторы с подсветкой - незакрытые кавычки они вам продемонстрируют.
  • Все циклы, операторы выбора и тому подобное. оформляйте «лесенкой», это позволит быстро найти пропущенную скобку.
  • Будьте бдительны :)
Интересное в интернете: игрушки для мальчиков лего