Ошибка в синтаксисе PHP (Ошибка в синтексе при написаний кода Импорта данных с веб-страниц)

Модератор: Модераторы разделов

AsanBosam
Сообщения: 6

Ошибка в синтаксисе PHP

Сообщение AsanBosam »

Пытаюсь научиться языку PHP и вот мой первый блин :wacko:
Переписывал исходный код из книги, только вот что то видать не дописал или переписал
Помогите пожалуйста найти проблему

Код: Выделить всё

<html>
<?
// Инициализируем объект типа CURL
$ch = curl_init( "http://www.metacritic.com/video/" );

// Подделываем пользовательский программный агент
curl_setopt ( $ch, CURLOPT_USERAGENT, "Internet Explorer" );

// Начинаем буферизацию
ob_start( );

// Получаем HTML из MetaCritic
curl_exec( $ch );
curl_close( $ch );

// Получаем содержимое выходного буфера
$str = ob_get_contents( );
ob_end_clean( );

// Полчаем отсортированный по именам список
preg_match_all( "/\<div id=\"sortbyname1\"\>(.*?)\<\/div\>/is",
$str, $byname );

// Полчаем каждый фильм отдельно
preg_match_all( "/\FONT.*?>(.*?)\<\/FONT\>.*?\<A.*?\>(.*?)\<BR/\>/is"
$byname[0], $moviedata );

// Обрабатываем данные о фильмах
$movies = array( );
for( $i = 0: $i < count( $moviedata[1] ); $i++ )
{
// Оценки готовы
$score = moviedata[1][$i];
// Нам необходимо очистить заголовок от тегов
// и декодировать HTML
$title = moviedata[2][$i];
$title = preg_replace( "/<.*?>/", "", $title );
$title = html_entity_decode( $title );
// Список фильмов добавляется в массив
$movies []= array( $score, $title );
}
?>
<body>
<table>
<tr>
<th>Name</th><th>Score</th>
</tr>
<? foreach( $movies as $movie ) {?>
<tr>
<td><? echo( $movie[1] ) ?></td>
<td><? echo( $movie[0] ) ?></td>
</tr>
<? } ?>
</table>
</body>
</html>


При запуске выдает вот такую ошибку
Parse error: syntax error, unexpected T_VARIABLE in W:\home\192.168.1.2\www\scrapecritic.php on line 26


Ссылка на файл
http://93.100.173.85/scrapecritic.php
Спасибо сказали:
Аватара пользователя
korisk
Сообщения: 205
ОС: Xubuntu

Re: Ошибка в синтаксисе PHP

Сообщение korisk »

// Полчаем каждый фильм отдельно
preg_match_all( "/\FONT.*?>(.*?)\<\/FONT\>.*?\<A.*?\>(.*?)\<BR/\>/is" ,
$byname[0], $moviedata );

Кажется после is" нужна запятая.

Удач.
Registerd Linux user #486684 at http://counter.li.org/
Спасибо сказали:
AsanBosam
Сообщения: 6

Re: Ошибка в синтаксисе PHP

Сообщение AsanBosam »

korisk Спасибо, но похоже что есть еще 1 ошибка.

Parse error: syntax error, unexpected ':', expecting ';' in W:\home\192.168.1.2\www\scrapecritic.php on line 30
Спасибо сказали:
mikluxo
Сообщения: 283
ОС: Slackware 12.2

Re: Ошибка в синтаксисе PHP

Сообщение mikluxo »

AsanBosam писал(а):
28.02.2009 11:38
Parse error: syntax error, unexpected ':', expecting ';' in W:\home\192.168.1.2\www\scrapecritic.php on line 30

в форе, $i=0 нужно двоеточие убрать, точку с запятой поставить.
AsanBosam писал(а):
28.02.2009 11:14
for( $i = 0: $i < count( $moviedata[1] ); $i++ )
Ich weiss, dass ich nichts weiss, aber wissen Sie es auch?
Завистники на что не взглянут,
подымут вечно лай,
А ты себе своей дорогою ступай,
Полают, да отстанут. Крылов
Спасибо сказали:
AsanBosam
Сообщения: 6

Re: Ошибка в синтаксисе PHP

Сообщение AsanBosam »

mikluxo Спасибо, еще минус 1 ошибка)

теперь пишет
Parse error: syntax error, unexpected '[' in W:\home\192.168.1.3\www\scrapecritic.php on line 33

но "неожиданных" [ я не нашел
Спасибо сказали:
mikluxo
Сообщения: 283
ОС: Slackware 12.2

Re: Ошибка в синтаксисе PHP

Сообщение mikluxo »

AsanBosam писал(а):
28.02.2009 11:14
<? foreach( $movies as $movie ) {?>

Хоть я и поверхностно знаю php, мне кажется ошибка здесь. Попробуйте поменять
<? foreach( $movie as $movies){?>

upd. не тут нормально.
Ich weiss, dass ich nichts weiss, aber wissen Sie es auch?
Завистники на что не взглянут,
подымут вечно лай,
А ты себе своей дорогою ступай,
Полают, да отстанут. Крылов
Спасибо сказали:
pcodr
Сообщения: 283
ОС: Debian

Re: Ошибка в синтаксисе PHP

Сообщение pcodr »

AsanBosam
Вы это наугад писали или в нетрезвом виде? :)
Легче сразу привести как правильно, а то эта тема разрастется на 10 страниц :)

Код:

<html> <? // Инициализируем объект типа CURL $ch = curl_init( "http://www.metacritic.com/video/" ); // Подделываем пользовательский программный агент curl_setopt ( $ch, CURLOPT_USERAGENT, "Internet Explorer" ); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); // Получаем HTML из MetaCritic $str = curl_exec( $ch ); // Полчаем отсортированный по именам список preg_match( '#<div id="sortbyname1">(.*?)</div>#is', $str, $byname); // Полчаем каждый фильм отдельно preg_match_all( "#SPAN.*?>(\d+)</SPAN>.*?<A.*?>(.*?)</A#is", $byname[0], $moviedata ); // Обрабатываем данные о фильмах $movies = array( ); for( $i = 0; $i < count( $moviedata[1] ); $i++ ) { // Оценки готовы $score = $moviedata[1][$i]; // Нам необходимо очистить заголовок от тегов // и декодировать HTML $title = $moviedata[2][$i]; $title = html_entity_decode( $title ); // Список фильмов добавляется в массив $movies []= array( $score, $title ); } ?> <body> <table> <tr> <th>Name</th><th>Score</th> </tr> <? foreach( $movies as $movie ) {?> <tr> <td><? echo( $movie[1] ) ?></td> <td><? echo( $movie[0] ) ?></td> </tr> <? } ?> </table> </body> </html>
remote system type is unix
Спасибо сказали:
AsanBosam
Сообщения: 6

Re: Ошибка в синтаксисе PHP

Сообщение AsanBosam »

Все подчистил просканил и finereader'ом и вот что вышло

Код: Выделить всё

<html>
<?

$ch = curl_init( "http://www.metacritic.com/video/" );

curl_setopt( $ch, CURLOPT_USERAGENT, "Internet Explorer" );

ob_start( );

curl_exec( $ch );
curl_close( $ch );

$str = ob_get_contents( );
ob_end_clean( );

preg_match( "/\<DIV ID=\"sortbynamel\"\>(.*?)\<\/DIV\>/is", $str, $byname );

preg_match_all( "/\<SPAN.*?>(.*?)\<\/SPAN\>.*?\<A.*?\>(.*?)\<BR\>/is", $byname[0], $moviedata );

$movies = array(  );
for( $i = 0;  $i < count( $moviedata[l] ); $i++ )
{

$score = $moviedata[1][$i];

$title = $moviedata[2][$i];
$title * preg_replace( "/<.*?>/", "", $title );
$title = html_entity_decode( $titie );

$movies []= array( $score, $title );
}
?>
<body>
<table>
<tr>
<th>Name</th><th>Score</th>
</tr>
<? foreach( $movies as $movie ) { ?>
<tr>
<td><? echo( $movie[1] ) ?></td>
<td><? echo( $movie[0] ) ?></td>
</tr>
<? } ?>
</table>
</body>
</html>


И все равно ошибка
Fatal error: Call to undefined function curl_init() in W:\home\192.168.1.3\www\scrapecritic.php on line 4
Спасибо сказали:
KernelPanic
Бывший модератор
Сообщения: 2060
Статус: Brain Атаке
ОС: Debian squeeze/sid/exp

Re: Ошибка в синтаксисе PHP

Сообщение KernelPanic »

Не думаю, что эти ошибки связаны с использованием Вами линукса, а для проблем в ПХП есть свои сайты. На вскидку, вот Вам ссылка.
Спасибо сказали:
pcodr
Сообщения: 283
ОС: Debian

Re: Ошибка в синтаксисе PHP

Сообщение pcodr »

AsanBosam, не установлен модуль curl для php
remote system type is unix
Спасибо сказали: