Модератор: Модераторы разделов
AsanBosam
Сообщения: 6
Сообщение
AsanBosam » 28.02.2009 11:14
Пытаюсь научиться языку PHP и вот мой первый блин
Переписывал исходный код из книги, только вот что то видать не дописал или переписал
Помогите пожалуйста найти проблему
Код: Выделить всё
<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
Сообщение
korisk » 28.02.2009 11:18
// Полчаем каждый фильм отдельно
preg_match_all( "/\FONT.*?>(.*?)\<\/FONT\>.*?\<A.*?\>(.*?)\<BR/\>/is" ,
$byname[0], $moviedata );
Кажется после is" нужна запятая.
Удач.
AsanBosam
Сообщения: 6
Сообщение
AsanBosam » 28.02.2009 11:38
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
Сообщение
mikluxo » 28.02.2009 11:43
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
Сообщение
AsanBosam » 28.02.2009 11:53
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
Сообщение
mikluxo » 28.02.2009 11:59
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
Сообщение
pcodr » 28.02.2009 12:25
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
Сообщение
AsanBosam » 28.02.2009 13:41
Все подчистил просканил и 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
Сообщение
KernelPanic » 28.02.2009 14:47
Не думаю, что эти ошибки связаны с использованием Вами линукса, а для проблем в ПХП есть свои сайты. На вскидку, вот Вам
ссылка .
pcodr
Сообщения: 283
ОС: Debian
Сообщение
pcodr » 28.02.2009 14:54
AsanBosam , не установлен модуль curl для php
remote system type is unix