![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 233 Pomógł: 27 Dołączył: 27.08.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam mam kilka problemów ze skryptem czytnika rss. Dopiero co poznaje php więc mam parę pytań z którymi nie mogę sobie poradzić. O to kod skryptu:
Kod: <?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 = "public_html/skrypt/"; /* 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("/(#{.*?)(IMG:http://forum.php.pl/style_emoticons/default/sad.gif) .*?})/", "\\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, 10); 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", $this->content, $items); if (sizeof($items[0]) == 0) { echo "No item elements found in rss feed.<br />\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 ?> Skrypt testuje na stronie http://ycd3.pl/gsm/ 1.Jak zmienić datę,godzinę nagłówku z wiadomościami,na stronie pokazuje mi się wersja angielska a ja chciałbym aby wyświetlało się po polsku. 2.Jak zrobić aby po kliknięciu czytaj dalej nie przenosiło mnie na stronę z skąd pobrałem rss tylko na moją stronę i pokazywało ten sam tekst i pisało źródło tekstu.Kolega mi mówił że trzeba użyć read(); ale nie wie jak dokładnie to zrobić.Jak mam to zastosować na stronie? 3.Czy jest jakiś skrypt aby z pobieranych rss tworzyły się tagi? Jeśli nie to jak to stworzyć? Nie mogę sobie poradzić z tymi 3 rzeczami,mam nadzieję że mi pomożecie Pozdrawiam |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 10:09 |