Центр пользователя  |  Ваши сообщения  |  FAQ
Форум поддержки phpBB » Общие » PHP и MySQL

Скрипт импорта новостей

Обсуждение вопросов, связанных с разработкой web-систем

Сообщение 08 апр 2010, 19:44

Всем Привет! :)
Писался скрипт импорта новостей из news.auto.ru из RSS-ленты (http://news.auto.ru/rss/all_recent_news.rss) в БД для отображения их на сайте. Сам скрипт выглядит так:
Код: выделить все
<?php
set_time_limit(320);
require("***.php");
require("***.php");
function parse_rss($reg_exp, $xml_data) {
     preg_match_all($reg_exp, $xml_data, $temp);
     return array(
         'count'=>count($temp[0]),
         'title'=>$temp[1],
         'link'=>$temp[2],
         'desc'=>$temp[3]
     );
}

$con = new connection($cfg['mysql']['host'], $cfg['mysql']['db'], $cfg['mysql']['user'], $cfg['mysql']['pwd'], 1);

$url = "http://news.auto.ru/rss/all_recent_news.rss";       //адрес RSS ленты
$reg = "'<item>.*?<title>(.*?)</title>.*?<link>(.*?)</link>.*?<description>(.*?)</description>.*?</item>'si"; 
$rss = parse_rss($reg, file_get_contents($url)); //$rss = simplexml_load_file($url);       //Интерпретирует XML-файл в объект
$lnk = array_reverse($rss['link']);
//цикл для обхода всей RSS ленты
$c = 1;
foreach($lnk as $key => $item){
        $txt  = file_get_contents($item);
        @iconv("UTF-8", "windows-1251", $txt);
        if(preg_match("'<body[^>]*?>(.*?)<\/body>'si", $txt, $matches)){
           $body = trim($matches[1]); unset($matches);
           if(preg_match("'<div class="news_title">(.*?)<\/div>.*?<div class="news_text">(.*?)<\/div>'si", $body, $matches)){
              $head = trim($matches[1]);
              $body = trim($matches[2]); unset($matches); 
                $sql  = mysql_query("SELECT COUNT(*) FROM a_news WHERE head='".addslashes($head)."'", $con->id);
                if(mysql_result($sql, 0) < 1){
                  echo $head."<br />";
                if(preg_match_all("'<img.*?src=\"(.*?)\".*?>'si", $body, $matches)){
                   for($i = 0; $i < count($matches[1]); $i++){
                        $img[0] = file_get_contents(trim($matches[1][$i]));
                        $img[1] = rand(0, mktime());
                        $fp     = fopen("files/news/".$img[1].".jpg", "w");
                        fwrite($fp, $img[0]);
                        fclose($fp);
                        $body = str_replace(trim($matches[0][$i]), "<img src='files/news/".$img[1].".jpg' border='1'>", $body);
                   }
                }
                $body .= "<br /><br />// <a href='http://auto.ru'>auto.ru</a>";
                mysql_query("INSERT INTO a_news (pid, date, head, body) VALUES ('1', UNIX_TIMESTAMP(), '".addslashes($head)."', '".addslashes($body)."')", $con->id) or die(mysql_error());
                $c++;
              }
           }
        }
       
        if($c==2) die();
}
mysql_close($con->id);
?>


Но почему то он не работает, хотя сделано всё правильно. Выскакивает ошибка ввиде
Parse error: syntax error, unexpected T_STRING in /home/auto.sbor.ru/data/www/auto.sbor.ru/***/***.php on line 28


И почему то это с переменным успехом получается - либо ошибка, либо его выкидывает на "if($c==2) die();".
Помогите пожалуйста, заранее спасибо!!! :)
Auto.Sbor Rally Team Member
Аватар пользователя
Mondeo
Пользователь
 
Сообщений: 19
Зарегистрирован:
09 мар 2009, 23:26
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Вернуться в PHP и MySQL

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

Форум поддержки phpBB
2008 - 2017 © BB3x.ru - русская поддержка форума phpBB3
Создано на основе phpBB® Forum Software © phpBB Group
+ 17 предустановленных модов
+ SEO-оптимизация форума
+ авторизация через соц. сети
+ защита от спама