Skocz do zawartości
"Idzie nowe..." - o zmianach i nie tylko ×
Przeniesienie zakupów z IPS Marketplace / Moving bought items from IPS Marketplace ×

jak przekonwertować rss utf-8 na iso


rudy99

Rekomendowane odpowiedzi

Witam. jak przekonwertować rss utf-8 na iso

rss jest w utf-8 a strona w iso8859-2 prosze o pomoc

kod pliku rss

[long]

<?php
/************************************************************
RSS Fetch 0.4.1
RSS Feed Reader
Author: Drew Phillips
www.neoprogrammers.com
Copyright 2005 Drew Phillips

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.



************************************************************/



class rss_parser {
 var $update_interval = 60;    
 /* How often to fetch the rss file
    A cached version will be used between updates    */

 var $data_directory = "c:/rss_fetch/";
 /* Where to store the rss data from the feeds
    Note: an absolute path is better than a relative path here
    unless you plan on keeping the script to display the feeds
    in the same folder as this file and the feeds.   */



 /* NO NEED TO EDIT BELOW HERE UNLESS YOU KNOW WHAT YOU ARE DOING  */


 var $rss_url;
 var $num_to_show;
 var $do_update;
 var $tags = array();
 var $content;
 var $rss = array();

 var $feed_title;
 var $feed_link;
 var $feed_description;

 var $my_html;

 function rss_parser($url, $numtoshow = 10, $html = "", $update = 0)
 {
   $this->rss_url = $url;
   $this->num_to_show = $numtoshow;
   $this->do_update = $update;
   $this->my_html = preg_replace("/(#{.*?).*?})/", "\\1__\\2", $html); //xx:xx tag workaround

   $this->content = $this->fetch_feed();
   $this->parse_feed();
   $this->show();
 }


 /* string */
 function fetch_feed()
 { 
   $url_parts = parse_url($this->rss_url);

   $filename = $url_parts['host'] . str_replace("/", ",", $url_parts['path']) . "_" . @$url_parts['query'];
   if(file_exists($this->data_directory . "/$filename")) {
     $last = filemtime($this->data_directory . "/$filename");
     if(time() - $last > $this->update_interval * 60 || $this->update_interval == 0) {
       $update = 1;
     }
   } else {
       $create= 1;
   }

   if($create == 1 || ($this->do_update == TRUE && $update == 1)) {
     $fp = @fsockopen($url_parts['host'], 80, $errno, $errstr, 5);
     if (!$fp) {
       echo "Couldn't open rss feed {$this->feed_url} in {$_SERVER['PHP_SELF']}<br />\n";
       return;
     }

     fputs($fp, "GET " . $url_parts['path'] . "?" . @$url_parts['query'] . " HTTP/1.0\r\n"
               ."Host: " . $url_parts['host'] . "\r\n"
               ."User-Agent: Drew's RSS Reader 0.1\r\n"
               ."Connection: Close\r\n\r\n");

     while(!feof($fp)) {
       $rss_data .= @fgets($fp, 1024);
     }

     list(, $rss_data) = explode("\r\n\r\n", $rss_data, 2);

     $output = @fopen($this->data_directory . "/$filename", "w+");
     if(!$output) {
       return $rss_data;
     } else {
       flock($output, LOCK_EX);
       fputs($output, $rss_data);
       flock($output, LOCK_UN);
       fclose($output);
     }
   } //update

   return file_get_contents($this->data_directory . "/$filename");
 }

 /* void */
 function parse_feed()
 {
   preg_match("/<title>(.*?)<\/title>/", $this->content, $title);
   $this->feed_title = @$title[1];

   preg_match("/<link>(.*?)<\/link>/", $this->content, $link);
   $this->feed_link = @$link[1];

   preg_match("/<description>(.*?)<\/description>/", $this->content, $description);
   $this->feed_description = @$description[1];

   preg_match_all("/<item[^>]*>(.*?)<\/item>/s", file_get_contents("http://www.news.egospodarka.pl/rss.thtml"), $items);
   if (sizeof($items[0]) == 0) {
     echo "<br><font class=\"title\">Nie znaleziono żadnych informacji.</font><br> Prosimy wybrać inn± kategorię.\n";
   }

   for($i = 0; $i < sizeof($items[0]); ++$i) {
     preg_match_all("/(?:<([\w:]*)[^>]*>(?:<!\[CDATA\[)?(.*?)(?:]]>)?<\/\\1>)+?/si", preg_replace("/<item[^>]*>/", "", $items[0][$i]), $elements);
     for($j = 0; $j < sizeof($elements[0]); ++$j) {
       $elements[1][$j] = str_replace(":", "__", $elements[1][$j]);  //regex fix for items with : like dc:date
       $this->rss[$i][$elements[1][$j]] = trim(html_entity_decode($elements[2][$j]));
     }
   }
 }


 /* void */
 function show()
 {
   if($this->my_html == "") {
     $this->show_html();
   } else {
     $this->show_user_html();
   }
 }

 function show_html()
 {
   $show = (sizeof($this->rss)  > $this->num_to_show ? $this->num_to_show : sizeof($this->rss));
   for($i = 0; $i < $show; ++$i) {
     echo "- <a href=\"{$this->rss[$i]['link']}\" target=\"_new\">{$this->rss[$i]['title']}</a><br />\n";
   }
 }

 function show_user_html()
 {
   $show = (sizeof($this->rss) > $this->num_to_show ? $this->num_to_show : sizeof($this->rss));
   for($i = 0; $i < $show; ++$i) {
     extract($this->rss[$i]);
     $item = preg_replace("/#\{([^}]+)}/e", "$\\1", $this->my_html);
     echo $item;
   }
 }

} // end class

?>

[/long]

Edytowane przez DawPi
Dodano code oraz long.
Odnośnik do komentarza
Udostępnij na innych stronach

  • Manager

Co nadpisać? Tutaj nie ma co nadpisywać tylko to zrobić. A jak nie posiadasz takiej wiedzy to zapraszam do działu giełda.

A wcześniej jeszcze napisz czy dotyczy to IP.Board w wersji 2.3? Jeśli tak to dlaczego nie korzystasz z wbudowanego czytnika RSS?

intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Odnośnik do komentarza
Udostępnij na innych stronach

  • Manager

Automatyczna wiadomość

Ten temat został przeniesiony z forum:

"Invision Power Board -> Invision Power Board 2.3.x oraz 2.2.x -> Ogólny support IPB"

do:

"Ogólne -> Web & Hosting & Grafika"

intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę.