Регистрация    Забыли пароль?        Правила форума    FAQ (читать перед созданием новой темы)
Имя   Пароль  запомнить
  
Просмотр темы
Вернуться на сайт: PHP-Fusion SF Russian Support Site

Форум поддержки PHP-Fusion SF | PHP-Fusion SF - Разное | Вопросы / Жалобы / Предложения
# 21 Тема: RE: Rss парсер
genrih
Пользователь

Avatar пользователя



Завсегдатый

Сообщений: 77
Зарегистрирован: 09 Января 2009, 01:15:00
Сказали спасибо 1 раз
Статус: offline
Опубликовано 14 Мая 2009, 11:17:54
Всем привет
Совсем задолбался я с этой лентой..
То кодировка не пашет, то еще чего..
Подскажите почему с рус BBC не идет?все перепробовал!

Плагин парсера поставил - показывает время до следующего обновления и все...

Сделал как тут - http://www.rus-phpfusion.com/forum/viewthread.php?forum_id=9&thread_id=1944&pid=19852#post_19852
Панель вообще не появляется (включена!)
Из этого кода попробовал поставить только то, что между openside\closeside - панель появилась но пустая.
Ну ладно тут, но почему через плагин не идет? С других же хоть и криво но транслирует!!

Вот линк - новости есть - http://www.bbc.co.uk/russian/rolling_news/index.xml
Подскажите может нюансы какие я упустил?


if(substr_count($_SERVER['REQUEST_URI'],'weblinks.php') > 0 ) {
openside("Лента новостей BBC");

$cashe_filename = $_SERVER['DOCUMENT_ROOT']."/bbc_news.txt";

// wrap string by len, save existing words
function wrap_by_len($str, $max_len, $endimiter = '…')
{
if( strlen($str) <= ($max_len - strlen($endimiter)) ) return $str ;

$result_str = '';
$words = explode(" ", $str);
$max_len -= strlen($endimiter);

for( $i = 0; strlen($result_str) < $max_len; $i++ )
$result_str .= $words[$i].' ';

$result_str = rtrim($result_str," ,");

return $result_str.$endimiter ;
}

/**********************************************************
* Parse XML data into an array structure *
* Usage: array parse_rss ( string data ) *
**********************************************************/
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]
);
}

/**********************************************************
* Parse Array data into an HTML structure *
* Usage: string parse_rss ( array data ) *
**********************************************************/
function output_rss($pattern, $rss_data, $counter, $maxlen )
{
$result = '';

for($i=0; $i<$rss_data['count'] && $i<$counter; $i++)
{
$rss_data['desc'][$i] = wrap_by_len($rss_data['desc'][$i], $maxlen);

$result .= sprintf($pattern,
$rss_data['link'][$i],
html_entity_decode($rss_data['title'][$i]),
html_entity_decode($rss_data['desc'][$i])
);
}
return $result ;
}

/**********************************************************
* Settings *
**********************************************************/
$cashe_good_time = 1800; // in seconds
$counter = 6;
$maxlen = 200;
$url = 'http://www.bbc.co.uk/russian/rolling_news/index.xml';

$reg_exp = '#<item>.*?<title>(.*?)<\/title>.*?';
$reg_exp .='<link>(.*?)<\/link>.*?<description>';
$reg_exp .='(.*?)<\/description>.*?<\/item>#si';

$pattern = '<p><noindex><a rel="nofollow" target="_blank" href="%s">%s</a></noindex><br>%s</p>';

/**********************************************************
* Main script *
**********************************************************/

$refresh_cashefile = true ;
$data_is_output = false ;

// check cashe file modifications if file exist nad readalbe
if( file_exists($cashe_filename) )
{
$fileage = time() - filemtime( $cashe_filename );

// good cashe state, out cashe content and out here
if( $fileage < $cashe_good_time )
{
$refresh_cashefile = false ;
echo file_get_contents($cashe_filename);
$data_is_output = true ;
}
}

if( !$data_is_output )
{
if( $xml_data = file_get_contents($url) )
{
$rss_data = parse_rss($reg_exp, $xml_data);
$content = output_rss($pattern, $rss_data, $counter, $maxlen);

if( extension_loaded('mb_string') )
$content = mb_convert_encoding($content, "utf-8", "windows-1251");
elseif( extension_loaded('iconv') )
$content = iconv('utf-8', 'windows-1251', $content);

// need refresh cashe file' content
if( $refresh_cashefile )
{
$fp = fopen($cashe_filename, "w");

if( $fp )
{
fwrite($fp, $content);
fclose($fp);
}
}

// out content
echo $content ;
}
}
closeside();
}




Если вставить следующий код в панель
openside("BBC лента новостей");
echo "";
?><center>
<? echo @file_get_contents("http://www.bbc.co.uk/russian/rolling_news/index.xml"); ?>
</center>
<?php
closeside();



То вываливает все в кучу с кривой кодировкой, если сменить линк на английскую версию- можно разобрать текст, но все в куче...

Какой то кошмар.. то, что транслирует движек (новости сайта)- это не все понимают, валидность лента не проходит, Майкрософт браузер ошибку показывает (ФайрФокс только показывает новости), через feed submitter половина - фид с ошибками!
Сейчас становится очень популярным этот RSS, а тут такие глюки!!!

Вот линк http://rss.scripting.com - проверьте свою ленту, у кого включен RSS с новостей, может только у меня криво


[Изменил(а) genrih, 14 Мая 2009, 12:42:26]  
^ наверх ^
# 22  
genrih
Пользователь

Avatar пользователя



Завсегдатый

Сообщений: 77
Зарегистрирован: 09 Января 2009, 01:15:00
Сказали спасибо 1 раз
Статус: offline
Опубликовано 17 Мая 2009, 12:12:34
Видимо в связи с мировым кризисом экономит народ на интернете.... smiley
 
^ наверх ^
# 23  
Psc
SF Team

Avatar пользователя

Psc

SF Support Team

Почетный SF

Сообщений: 2515
Откуда: As is
Зарегистрирован: 10 Ноября 2007, 13:15:07
Сказали спасибо 353 раз
Статус: offline
Опубликовано 17 Мая 2009, 21:33:17
А нафиг оно?


--------------------
Retired
^ наверх ^
# 24  
genrih
Пользователь

Avatar пользователя



Завсегдатый

Сообщений: 77
Зарегистрирован: 09 Января 2009, 01:15:00
Сказали спасибо 1 раз
Статус: offline
Опубликовано 22 Мая 2009, 12:05:25
Нафиг???? Ну вот простой запрос к гуглу - free CMS RSS parser
Посмотри
 
^ наверх ^
# 25  
Psc
SF Team

Avatar пользователя

Psc

SF Support Team

Почетный SF

Сообщений: 2515
Откуда: As is
Зарегистрирован: 10 Ноября 2007, 13:15:07
Сказали спасибо 353 раз
Статус: offline
Опубликовано 23 Мая 2009, 11:13:20
Эм... Твой пост первый в гугле. Я зависссс на этом smiley

По теме - а что ты этим хочешь сказать?


--------------------
Retired
^ наверх ^
# 26  
Darth Emil
Пользователь

Avatar пользователя



Местный

Сообщений: 44
Зарегистрирован: 18 Мая 2009, 17:45:57
Сказали спасибо 0 раз
Статус: offline
Опубликовано 23 Мая 2009, 20:01:54
Я сделал так:
1. Скачал парсер отсюда: http://www.newsrss.ru/readerrssphp/index.php
2. Добавил новую панель с таким содержимым:
openside("RSS - новости"smiley;
echo "
<table width='10px' height='100' class='main-body'>
<tr width='10px'>
<td valign='top' side-body class='side-body'>
";
$url='http://www.edu.gov.kz/ru/sys/rss/?type=100&tx_ttnews%5Bcat%5D=1';
include ('includes/readerrss_utf8_win1251.php'smiley;
echo "</td>
</tr>
</table>";
closeside();


В принципе то что я хотел, но вот только эта панель при этом занимает пол-сайта. Как можно исправить, чтобы занимало столько сколько обычная панель?

Кстати, а до этого нашел другой парсер, специально для Фузиона, он работал как надо в течении суток, а потом при нажатии на заголовок новости перестал раскрывать текст, т.е. стал просто статичным текстом. Прикрепляю этот парсер, может подскажете что там не так...
Прикрепленные файлы
Для просмотра вложения зарегистрируйтесь


[Изменил(а) Darth Emil, 23 Мая 2009, 20:03:58]  
^ наверх ^
# 27  
Darth Emil
Пользователь

Avatar пользователя



Местный

Сообщений: 44
Зарегистрирован: 18 Мая 2009, 17:45:57
Сказали спасибо 0 раз
Статус: offline
Опубликовано 26 Мая 2009, 16:12:41
Исправил, просто я с chmod'ом намудрил.


[Изменил(а) Darth Emil, 26 Мая 2009, 21:25:37]  
^ наверх ^
# 28  
genrih
Пользователь

Avatar пользователя



Завсегдатый

Сообщений: 77
Зарегистрирован: 09 Января 2009, 01:15:00
Сказали спасибо 1 раз
Статус: offline
Опубликовано 28 Мая 2009, 20:32:33
В принципе то что я хотел, но вот только эта панель при этом занимает пол-сайта. Как можно исправить, чтобы занимало столько сколько обычная панель?


<table width='xxx' height='xxx' class='main-body'>
В общем пробуй тут или явно в пикселях или например width='100%'

Вот че то я нифига не смог это хозяйство запустить...


[Изменил(а) genrih, 28 Мая 2009, 20:48:22]  
^ наверх ^
# 29  
genrih
Пользователь

Avatar пользователя



Завсегдатый

Сообщений: 77
Зарегистрирован: 09 Января 2009, 01:15:00
Сказали спасибо 1 раз
Статус: offline
Опубликовано 01 Июня 2009, 10:15:22
М-да... жаль, что вы игнорируете RSS как инструмент раскрутки сайта..
 
^ наверх ^
# 30  
genrih
Пользователь

Avatar пользователя



Завсегдатый

Сообщений: 77
Зарегистрирован: 09 Января 2009, 01:15:00
Сказали спасибо 1 раз
Статус: offline
Опубликовано 01 Июня 2009, 10:35:03
В одной из тем snake_oriental рекомендовал посмотреть каким должен быть софтовый портал - X-iWeb.Ru. Так вот на нем сделаны RSS каналы, во всяком случае в IE не глючат, валидность, правда, все равно не проходят.
 
^ наверх ^
# 31  
genrih
Пользователь

Avatar пользователя



Завсегдатый

Сообщений: 77
Зарегистрирован: 09 Января 2009, 01:15:00
Сказали спасибо 1 раз
Статус: offline
Опубликовано 04 Июня 2009, 22:57:39
Вот нашел такой плагин - lenta_ru. Принцип у него простой сливается в infusions и активируется. В результате в меню появляется линк и открывается все это хоз-во с отдельном окне. Там читается обычный хтмл линк http://lenta.ru/r/illustrated.html
Ну я озабоченный rss каналами решил сделать это с rss. Всунул код из данной ветки в код плагина. В общем сама проблема. Если лента в 1251 кодировке то все нормально, если в утф-8 проходится раскомментировать этот код
if( extension_loaded('mb_string') )
$content = mb_convert_encoding($content, "utf-8", "windows-1251");
elseif( extension_loaded('iconv') )
$content = iconv('utf-8', 'windows-1251', $content);



И тогда выводится только одна новость..
Знаний не хватает - подскажите где тут "собака порылась"

-
Прикрепленные файлы
Для просмотра вложения зарегистрируйтесь


[Изменил(а) genrih, 05 Июня 2009, 18:05:45]  
^ наверх ^
Перейти на форум:


94,163,193 уникальных посетителей
сейчас: 29 Марта 2024, 10:07:14
Генерация страницы: 0.31 сек.