PHP класс для импорта новостей
http://www.codenet.ru/webmast/php/newsimp/#templ).
При попытке использовать этот класс получил следующую ошибку.
=============================================
Fatal error: Call-time pass-by-reference has been removed in C:OpenServerdomainskhamzin.ruprogramsviewsnewsimport.php on line 84
=============================================
Обращение к RSS ленте производилось по примеру класса:
Ошибка произошла на 84 строке класса.
Помогите разобраться плз, в чем проблема. Не могу понять.
Спасибо.
Воспользовался статьей с сайта "PHP класс для импорта новостей" (
При попытке использовать этот класс получил следующую ошибку.
=============================================
Fatal error: Call-time pass-by-reference has been removed in C:OpenServerdomainskhamzin.ruprogramsviewsnewsimport.php on line 84
=============================================
Обращение к RSS ленте производилось по примеру класса:
Код:
<?php
$news = new News(7200, "rss091", 10);
$news->setmysql("localhost", "root", "", "newsimport");
$news->settemplate("<strong>%PUBDATE%</strong>: <a href="%URL%">%TITLE%:</a>%DESCRIPTION%", "H:m d/m");
print $news->read("https://allsoft.ru/rss_vokrug.xml");
?>
$news = new News(7200, "rss091", 10);
$news->setmysql("localhost", "root", "", "newsimport");
$news->settemplate("<strong>%PUBDATE%</strong>: <a href="%URL%">%TITLE%:</a>%DESCRIPTION%", "H:m d/m");
print $news->read("https://allsoft.ru/rss_vokrug.xml");
?>
Код:
<?
/* PHP класс для импорта новостей. Поддержка rss091 и ultramode.txt. */
/* Настраиваемое кеширование. Возможность сохранения кеш файла в таблице */
/* MySql или во временном файле. */
/* */
/* */
/* Обработчики входных файлов вынесены в отдельные классы, благодоря чему */
/* можно легко увеличивать количество поддерживаемых стандартов */
/* */
/* Последняя версия всегда на http://www.codenet.ru/webmast/php/newsimp/ */
/* Пример иcпользования в файле example.php */
/* */
/* (c) 2004 Mike */
/* */
/* Вопросы, предложения и исправления через форму обратной связи: */
/* http://mike.nov.ru/feedback/ */
/* */
/* Вспомогательный класс для разбора входного файла */
/* */
/* Парсер rss091 */
/* */
/* Используется следующим образом: */
/* */
/* $parser=new RSS091Parser(dateformat); */
/* $result=$parser->Parse(data,template,newscount); */
/* */
/* , где: */
/* */
/* - dateformat - формат даты (как у функции date()) */
/* - data - данные для обработки */
/* - выходной шаблон */
/* - количество обрабатываемых новостей */
class RSS091Parser {
var $DATA;
var $template;
var $xml_parser;
var $newscount;
var $dateformat;
function RSS091Parser($idateformat) {
$this->dateformat=$idateformat;
$this->DATA=Array();
$this->DATA["count"]=0;
}
/* RSS 0.91 XML Handlers */
function startElement($parser, $name, $attrs) {
$this->DATA["curtag"]=$name;
$this->DATA[$name]="";
}
function endElement($parser, $name) {
if ($name=="ITEM" && $this->DATA["count"]<$this->newscount) {
$t=$this->template;
if (!empty($this->dateformat)) {
$ttime=strtotime($this->DATA["PUBDATE"]);
$this->DATA["PUBDATE"]=date($this->dateformat,$ttime);
}
$t=str_replace("%URL%",$this->DATA["LINK"],$t);
$t=str_replace("%TITLE%",$this->DATA["TITLE"],$t);
$t=str_replace("%DESCRIPTION%",$this->DATA["DESCRIPTION"],$t);
$t=str_replace("%PUBDATE%",$this->DATA["PUBDATE"],$t);
$this->DATA["data"].=$t;
$this->DATA["count"]++;
}
$this->DATA["curtag"]="";
}
function characterData($parser, $data) {
$this->DATA[$this->DATA["curtag"]].=$data;
}
function Parse($data,$itemplate,$newscount) {
$this->template=$itemplate;
$this->newscount=$newscount;
$this->xml_parser=xml_parser_create();
xml_set_object($this->xml_parser, &$this); -[B] на этой строке ошибка[/B]
xml_set_element_handler($this->xml_parser, "startElement", "endElement");
xml_set_character_data_handler($this->xml_parser, "characterData");
xml_parse($this->xml_parser, $data) or die("Error parsing XML");
xml_parser_free($this->xml_parser);
return($this->DATA["data"]);
}
};
/* PHP класс для импорта новостей. Поддержка rss091 и ultramode.txt. */
/* Настраиваемое кеширование. Возможность сохранения кеш файла в таблице */
/* MySql или во временном файле. */
/* */
/* */
/* Обработчики входных файлов вынесены в отдельные классы, благодоря чему */
/* можно легко увеличивать количество поддерживаемых стандартов */
/* */
/* Последняя версия всегда на http://www.codenet.ru/webmast/php/newsimp/ */
/* Пример иcпользования в файле example.php */
/* */
/* (c) 2004 Mike */
/* */
/* Вопросы, предложения и исправления через форму обратной связи: */
/* http://mike.nov.ru/feedback/ */
/* */
/* Вспомогательный класс для разбора входного файла */
/* */
/* Парсер rss091 */
/* */
/* Используется следующим образом: */
/* */
/* $parser=new RSS091Parser(dateformat); */
/* $result=$parser->Parse(data,template,newscount); */
/* */
/* , где: */
/* */
/* - dateformat - формат даты (как у функции date()) */
/* - data - данные для обработки */
/* - выходной шаблон */
/* - количество обрабатываемых новостей */
class RSS091Parser {
var $DATA;
var $template;
var $xml_parser;
var $newscount;
var $dateformat;
function RSS091Parser($idateformat) {
$this->dateformat=$idateformat;
$this->DATA=Array();
$this->DATA["count"]=0;
}
/* RSS 0.91 XML Handlers */
function startElement($parser, $name, $attrs) {
$this->DATA["curtag"]=$name;
$this->DATA[$name]="";
}
function endElement($parser, $name) {
if ($name=="ITEM" && $this->DATA["count"]<$this->newscount) {
$t=$this->template;
if (!empty($this->dateformat)) {
$ttime=strtotime($this->DATA["PUBDATE"]);
$this->DATA["PUBDATE"]=date($this->dateformat,$ttime);
}
$t=str_replace("%URL%",$this->DATA["LINK"],$t);
$t=str_replace("%TITLE%",$this->DATA["TITLE"],$t);
$t=str_replace("%DESCRIPTION%",$this->DATA["DESCRIPTION"],$t);
$t=str_replace("%PUBDATE%",$this->DATA["PUBDATE"],$t);
$this->DATA["data"].=$t;
$this->DATA["count"]++;
}
$this->DATA["curtag"]="";
}
function characterData($parser, $data) {
$this->DATA[$this->DATA["curtag"]].=$data;
}
function Parse($data,$itemplate,$newscount) {
$this->template=$itemplate;
$this->newscount=$newscount;
$this->xml_parser=xml_parser_create();
xml_set_object($this->xml_parser, &$this); -[B] на этой строке ошибка[/B]
xml_set_element_handler($this->xml_parser, "startElement", "endElement");
xml_set_character_data_handler($this->xml_parser, "characterData");
xml_parse($this->xml_parser, $data) or die("Error parsing XML");
xml_parser_free($this->xml_parser);
return($this->DATA["data"]);
}
};
Спасибо.