Вывод RSS-ленты на статической php странице

Статус
В этой теме нельзя размещать новые ответы.

lvivport

Создатель
Регистрация
8 Авг 2008
Сообщения
46
Реакции
3
Есть RSS лента. Нужно выводить заголовки из нее на статической странице. Как это сделать?

Добавлено через 28 минут
Извините, протупил. Не заметил раздел ПХП для начинающих. Перенесите тему, пожалуйста
 
Есть RSS лента. Нужно выводить заголовки из нее на статической странице. Как это сделать?
1) Скорее всего вы ошиблись разделом.
2) Что значит "выводить заголовки"? спарсить?
Чтобы получить исчерпывающий ответ, нужно правильно задать вопрос, показать пример RSS ленты и конкретно описать что вы хотите получить.
 
вот например лента
Для просмотра ссылки Войди или Зарегистрируйся
Мне нужно на статическую страницу выводить из нее заголовки. Парсить ничего не нужно. Ссылка заголовка ведет на источник.
 
вот например лента
Для просмотра ссылки Войди или Зарегистрируйся
Мне нужно на статическую страницу выводить из нее заголовки. Парсить ничего не нужно. Ссылка заголовка ведет на источник.
а парсить-то как раз нужно
PHP:
<?php
$itemNum=0;
class RSSParser	{
	var $channel_title="";
	var $channel_website="";
	var $channel_description="";
	var $channel_pubDate="";
	var $channel_lastUpdated="";
	var $channel_copyright="";
	var $title="";
	var $link="";
	var $description="";
	var $pubDate="";
	var $author="";
	var $url="";
	var $width="";
	var $height="";
	var $inside_tag=false;	
	function RSSParser($file,$encType)	{
			$this->xml_parser = xml_parser_create($encType);
			xml_set_object( $this->xml_parser, &$this );
			xml_set_element_handler( $this->xml_parser, "startElement", "endElement" );
			xml_set_character_data_handler( $this->xml_parser, "characterData" );
			$fp = @fopen("$file","r") or die( "$file could not be opened" );
			while ($data = fread($fp, 4096)){xml_parse( $this->xml_parser, $data, feof($fp)) or die( "XML error");}
			fclose($fp);
			xml_parser_free( $this->xml_parser );
		}
	
	function startElement($parser,$tag,$attributes=''){
		$this->current_tag=$tag;
		if($this->current_tag=="ITEM" || $this->current_tag=="IMAGE"){
			$this->inside_tag=true;
			$this->description="";
			$this->link="";
			$this->title="";
			$this->pubDate="";
		}
	}
	
	function endElement($parser, $tag){
		switch($tag){
			case "ITEM":
				$this->titles[]=trim($this->title);
				$this->links[]=trim($this->link);
				$this->descriptions[]=trim($this->description);
				$this->pubDates[]=trim($this->pubDate);
				$this->authors[]=trim($this->author);
				$this->author=""; $this->inside_tag=false;
				break;
			case "IMAGE":
				$this->channel_image="<img src=\"".trim($this->url)."\" width=\"".trim($this->width)."\" height=\"".trim($this->height)."\" alt=\"".trim($this->title)."\" border=\"0\" title=\"".trim($this->title)."\" />";
				$this->title=""; $this->inside_tag=false;
			default:
				break;
		}
	}
	
	function characterData($parser,$data){
		if($this->inside_tag){
			switch($this->current_tag){
				case "TITLE":
					$this->title.=$data; break;
				case "DESCRIPTION":
					$this->description.=$data; break;
				case "LINK":
					$this->link.=$data; break;
				case "URL":
					$this->url.=$data; break;					
				case "WIDTH":
					$this->width.=$data; break;
				case "HEIGHT":
					$this->height.=$data; break;
				case "PUBDATE":
					$this->pubDate.=$data; break;
				case "AUTHOR":
					$this->author.=$data;	break;
				default: break;									
			}//end switch
		}else{
			switch($this->current_tag){
				case "DESCRIPTION":
					$this->channel_description.=$data; break;
				case "TITLE":
					$this->channel_title.=$data; break;
				case "LINK":
					$this->channel_website.=$data; break;
				case "COPYRIGHT":
					$this->channel_copyright.=$data; break;
				case "PUBDATE":
					$this->channel_pubDate.=$data; break;					
				case "LASTBUILDDATE":
					$this->channel_lastUpdated.=$data; break;				
				default:
					break;
			}
		}
	}
}
/* адрес рсс ленты и кодировка */
$feed_rss = new RSSParser("http://inosmi.ru/export/rss2/index.xml","utf-8");
?>
<!--выводим заголовки рсс-->
<table width="100%" border="0" class="tab">
          <?php
/* количество заголовков в данном примере 9	*/	  
$feed_rss_RSSmax=9;
if($feed_rss_RSSmax==0 || $feed_rss_RSSmax>count($feed_rss->titles))$feed_rss_RSSmax=count($feed_rss->titles);
for($itemNum=0;$itemNum<$feed_rss_RSSmax;$itemNum++){?><tr>
            <td align="left" ><a href="<?php echo $feed_rss->links[$itemNum]; ?>"><?php 
		$title=$feed_rss->titles[$itemNum];
		echo  $title;
		?></a></td>
          </tr>
          <?php } ?>
        </table>
 
Супер! То что нужно

Только еще бы как-то переводить в кодировку cp1251

И еще, как выводить кроме заголовка со ссылкой еще и другие параметры? Например время, картинку, description
 
PHP:
<table width="100%" >
      <?php
$feed_rss_RSSmax=17;
if($feed_rss_RSSmax==0 || $feed_rss_RSSmax>count($feed_rss->titles))$feed_rss_RSSmax=count($feed_rss->titles);
for($itemNum=0;$itemNum<$feed_rss_RSSmax;$itemNum++){?>
      <tr>
        <td align="center" ><a href="<?php echo $feed_rss->links[$itemNum]; ?>">
          <?php 
		$title=$feed_rss->titles[$itemNum];
		echo  iconv("UTF-8","windows-1251", $title )?></a>       </td>
      </tr>
      <tr>
        <td ><?php 
		$descr=$feed_rss->descriptions[$itemNum];
		echo  iconv("UTF-8","windows-1251", $descr )?>
           </td>
      </tr>
      <?php } ?>
        </table>
вот в 1251 и с дескрипшен вставь вместо этого
PHP:
<table width="100%" border="0" class="tab"> 
          <?php 
       
$feed_rss_RSSmax=9; 
if($feed_rss_RSSmax==0 || $feed_rss_RSSmax>count($feed_rss->titles))$feed_rss_RSSmax=count($feed_rss->titles); 
for($itemNum=0;$itemNum<$feed_rss_RSSmax;$itemNum++){?><tr> 
            <td align="left" ><a href="<?php echo $feed_rss->links[$itemNum]; ?>"><?php  
        $title=$feed_rss->titles[$itemNum]; 
        echo  $title; 
        ?></a></td> 
          </tr> 
          <?php } ?> 
        </table>
остальное можно тоже добавить в принципе просто готового сейчас под рукой нет
 
а не подскажете как можно вывести новости из rss ленты на html станице, как это реализовано на юкозе?
Цель вывода - страница с полноценными новостями из rss канала (с картинками и прочим)
 
Боюсь, что никак. На юкозе скорее всего стоит ЧПУ в mod_rewrite. А чем не устраивает расширение .php?
 
ну да, реврайтами сделать и всё путево будет!
 
Боюсь, что никак. На юкозе скорее всего стоит ЧПУ в mod_rewrite. А чем не устраивает расширение .php?

в php не силен, я не знаю как мне можно рализовать вывод rss контента на html странице, скажите как через php реализовать, сделаю, лишь бы результат получить, дайте конкретный пример или предложение, порассуждать я и сам могу, спасибо:)
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху