![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 Pomógł: 0 Dołączył: 21.08.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Potrzebuję pomocy przy czytniku kanałów RSS. Ogólnie skrypt działa, ale potrzebuję go trochę zmodyfikowac i tu mam problem bo sam nie mogę sobie poradzic. Przejdę do setna sprawy: 1. Potrzebuję tak zmodyfikowac kod żeby nie wyświetlały się daty aktualizacji i żeby nie było dla nich rezerwowanego miejsca. 2. Druga modyfikacja to możliwośc wyświetlania jedynie nagłowka kanału RSS. Wklejam kod samego czytnika: Kod <?php 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 = "/rss"; /* 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", $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 ?> Oraz jego wywołanie: Kod <?php include_once "./rss_fetch.php"; $html = " <tr>\n"; $html .= " <td style='background-color: #FFFFFF; font-weight: normal; color: #000000; font-size: 12px; font-family: Tahoma;'>\n"; $html .= " <font size: 12px><a href='#{link}' target='_new'>#{title}</a></font><br />\n"; $html .= " #{description}<br />\n"; $html .= " <font size='0';>#{pubDate}<br /><br />\n"; $html .= " </td>\n"; $html .= " </tr>\n"; $rss = new rss_parser("http://wdziek.info/news.xml", 15, $html, 1); ?> Będę bardzo wdzięczny za pomoc |
|
|
![]() |
![]()
Post
#2
|
|
![]() Admin Techniczny Grupa: Administratorzy Postów: 2 071 Pomógł: 93 Dołączył: 5.07.2005 Skąd: Olsztyn ![]() |
Proszę o zapoznanie się z tematem: Temat: Tematyka i zasady panujące na forum Przedszkole a następnie czekam na PW z poprawnym tagiem.
Do tego czasu temat pozostanie zamknięty. Btw raczej nikt go za Ciebie nie zmodyfikuje, jak sobie życzysz mogę przenieść na giełdę ofert |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 24.07.2025 - 17:11 |