<?php /* *bash.org.ru rss граббер *автор: disable *30.09.07 */ //грузим rss файл $data=file_get_contents('http://bash.org.ru/rss'); //обрабатываем $dat=array(); preg_match_all('|<pubDate>(.+)</pubDate>|',$data,$dat); $content=array(); preg_match_all('|<description><!\[CDATA\[(.+)\]\]></description>|',$data,$content); //теперь у нас есть 2 массива по 100 элементов, воспользуемся постраничным выводом //всего элементов $all=count($content[1]); //число сообщений на странице $pnumber=5; //номер страницы $page=(isset($_GET['page'])) ? (int)$_GET['page'] : 1; //число страниц $num_pages=ceil($all/$pnumber); //начальная позиция $start=$page*$pnumber-$pnumber; //проверка номера страницы if ($page > $num_pages || $page < 1) { $page=1; $start=0; } //посылаем заголовок header('Content-type:text/html;charset=utf-8'); //выводим верх страницы (html код, выносим за <?php ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>bash.org.ru</title> </head> <body> <?php //выводим цитаты if ($all) { for ($i=$start; $i<$start+$pnumber; $i++) { //if (!isset($dat[1][$i])) break; echo '<p style="border:1px solid;padding:2px">'; echo $dat[1][$i]; echo '<br />'; //не забываем про утф-8 echo iconv('windows-1251','utf-8',$content[1][$i]); echo '</p>'; } //навигация echo '<p>'; for($pr = '', $i =1; $i <= $num_pages; $i++) { echo $pr=(($i == 1 || $i == $num_pages || abs($i-$page) < 2) ? ($i == $page ? " [$i] " : ' <a href="'.$_SERVER['SCRIPT_NAME'].'?page='.$i.'">'.$i.'</a> ') : (($pr == ' ... ' || $pr == '')? '' : ' ... ')); } echo '</p>'; } else { echo '<p>цитат нет</p>'; } //закрываем теги ?> </body> </html>