форум vBSupport.ru > vBulletin > Old vB versions (3.0.x & 2.x.x) > vBulletin 3.5.x > vBulletin [3.5] Troubleshooting and Problems
Register Меню vBsupport Изображения Files Manager О рекламе Today's Posts Search
  • Родная гавань
  • Блок РКН снят
  • Premoderation
  • For English speaking users
  • Каталог Фрилансеров
  • If you want to buy some product or script
  • Администраторам
VBsupport перешел с домена .ORG на родной .RU Ура! Пожалуйста, обновите свои закладки - VBsupport.ru
Блок РКН снят, форум доступен на всей территории России, включая новые терртории, без VPN
На форуме введена премодерация ВСЕХ новых пользователей

Почта с временных сервисов, типа mailinator.com, gawab.com и/или прочих, которые предоставляют временный почтовый ящик без регистрации и/или почтовый ящик для рассылки спама, отслеживается и блокируется, а так же заносится в спам-блок форума, аккаунты удаляются
for English speaking users:
You may be surprised with restriction of access to the attachments of the forum. The reason is the recent change in vbsupport.org strategy:

- users with reputation < 10 belong to "simple_users" users' group
- if your reputation > 10 then administrator (kerk, Luvilla) can decide to move you into an "improved" group, but only manually

Main idea is to increase motivation of community members to share their ideas and willingness to support to each other. You may write an article for the subject where you are good enough, you may answer questions, you may share vbulletin.com/org content with vbsupport.org users, receiving "thanks" equal your reputation points. We should not only consume, we should produce something.

- you may:
* increase your reputation (doing something useful for another members of community) and being improved
* purchase temporary access to the improved category:
10 $ for 3 months. - this group can download attachments, reputation/posts do not matter.
20 $ for 3 months. - this group can download attachments, reputation/posts do not matter + adds eliminated + Inbox capacity increased + files manager increased permissions.

Please contact kerk or Luvilla regarding payments.

Important!:
- if your reputation will become less then 0, you will be moved into "simple_users" users' group automatically.*
*for temporary groups (pre-paid for 3 months) reputation/posts do not matter.
Уважаемые пользователи!

На форуме открыт новый раздел "Каталог фрилансеров"

и отдельный раздел для платных заказов "Куплю/Закажу"

Если вы хотите приобрести какой то скрипт/продукт/хак из каталогов перечисленных ниже:
Каталог модулей/хаков
Ещё раз обращаем Ваше внимание: всё, что Вы скачиваете и устанавливаете на свой форум, Вы устанавливаете исключительно на свой страх и риск.
Сообщество vBSupport'а физически не в состоянии проверять все стили, хаки и нули, выкладываемые пользователями.
Помните: безопасность Вашего проекта - Ваша забота.
Убедительная просьба: при обнаружении уязвимостей или сомнительных кодов обязательно отписывайтесь в теме хака/стиля
Спасибо за понимание
 
 
 
 
Absolut
Простоузер
Default Импорт RSS
0

Честно искал на форуме, ничего не нашел по теме:
Возможно ли в шапке форума транслировать через RSS новости с другого сайта?
Если это где то уже обсуждалось-тыкните меня носом, пожалуйста
Bot
Yandex Bot Yandex Bot is online now
 
Join Date: 05.05.2005
Реклама на форуме А что у нас тут интересного? =)
 
 
SerV
Продвинутый
Default
0

А можно поднять тему?
тот же вопрос: как транслировать RSS новости других сайтов?

я попробовал такую схему, предложенную этими ребятами:
http://www.newsrss.ru/readerrssphp/index.php

Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
</head>
<? $url='http://news.yandex.ru/index.rss' ; // че будем читать?
include ('../readerrss.php'); // где файл то?
?>
<body>
</body>
</html>
при этом, я хотел попробовать вставить код в объявление на форуме,
идея в том чтобы разделам форума, таким как софт/музыка и т.д.
дать ленту. например в софт транслировать rss новости вареза от netz'ов.

конечно - неработает.

Кто-нибудь пробовал подобное делать?


WBR!,
Serg
 
 
SerV
Продвинутый
Default
0

немного "поковырялся", и поискал по инету варианты скриптов-парсеров.
в результате вот что получилось:


PHP Code:
<?php

class fase4_rdf {

    var 
$_link_target "_blank";
    var 
$_phost "";
    var 
$_pport "";
    var 
$_pname "";
    var 
$_ppasswd "";
    var 
$_use_proxy false;
    var 
$_use_proxy_auth false;
    var 
$_refresh 0;   // int
    
var $_cached_file "";   // String
    
var $_use_cached_file false;
    var 
$_cache_type "";
    var 
$_remote_file "";
    var 
$_cache_dir "cache/";  // String
    
var $_cache_dir_ok false;
    var 
$_type ""// string (rss or rdf)
    
var $_display_opt = array();  // Array
    
var $_table_width 400;
    var 
$_use_dynamic_display false;
    var 
$_item_count 0;
    var 
$_max_count false;
    var 
$_array_channel = array();
    var 
$_array_item = array();
    var 
$_array_textinput = array();
    var 
$_array_image = array();
    var 
$_citem = array();
    var 
$_cdepth = array();
    var 
$_ctags = array( "x" ); 
    var 
$_item = array();   // Array
    
var $_depth = array();  // Array
    
var $_tags = array( "x" );  // Array
    
var $gc_probability 1;
    var 
$_output "";        
    function 
fase4_rdf()
    {
        
$this->_refresh = (time() - 1200);
    }
    function 
parse_RDF$rdf 
    { 
        unset(
$this->_array_item);
        
$this->_remote_file $rdf;
        echo 
"<!-- http://www.fase4.com/rdf/ -->\n";
        echo 
"<table width=\"".$this->_table_width."\">\n";        
        echo 
$this->cache();
        echo 
"</table>\n";
        unset(
$this->_output);
        
$this->_item_count 0;
        return 
true;
    }
    function 
finish() 
    { 
        
flush();
        
$this->_garbage_collection();
    }    
    function 
use_dynamic_display$bool )
    {
        
$this->_use_dynamic_display $bool;
        return 
true;
    }
    function 
_parse_xRDF$data )
    {
        
$this->_clear_Items(); 
        
$xml_parser xml_parser_create(); 
        
xml_set_object($xml_parser,$this);
           
xml_parser_set_option($xml_parser,XML_OPTION_CASE_FOLDING,0);
        
xml_set_element_handler($xml_parser"_startElement""_endElement"); 
        
xml_set_character_data_handler($xml_parser"_parseData");     
        if (!
xml_parse($xml_parsertrim($data))) {
                
$this->_throw_exception(sprintf("XML error: %s at line %d"
                
xml_error_string(xml_get_error_code($xml_parser)), 
                
xml_get_current_line_number($xml_parser))."<br /><br />Exception in function parse_RDF()."); 
            } 
        
xml_parser_free($xml_parser); 
    }     

    function 
set_refresh$seconds )
    {
        
$this->_refresh = (time() - $seconds);
        return 
true;
    }

    function 
set_max_item$int )
    {
        
$this->_max_count $int;
        return 
true;
    }
    
    function 
set_CacheDir$dir 
    {
        if(
substr($dir, -1) != "/") {
            
$dir $dir."/";
        }
        
$this->_cache_dir $dir;
    }
    
    function 
_throw_exception$msg )
    {
        echo 
"<div style=\"font-family: verdana, helvetica, arial, sans-serif;font-size:11px; color: #6699cc;margin-top:10px;margin-bottom:10px;\" align=\"center\">fase4 RDF Error: ".$msg."</div>";
        return 
true;
    }

    function 
_clear_Items$array "") { 
            
$this->_item = array ("title"=>"""link"=>"""description"=>"""url"=>"" ); 
    }

    function 
_clear_cItems$array "") { 
            
$this->_citem = array ("title"=>"""link"=>"""description"=>"""url"=>"" ); 
    }     


    function 
_startElement($parser$name$attrs) {
        if(
$name == "rss") {
            
$this->_type "rss";
        } elseif(
$name == "rdf:RDF" OR $name == "rdf") {
            
$this->_type "rdf";
        }
        
        if ( 
$name == "channel" AND $this->_type != "rdf" ) {
            
$this->_parse_mode "channel";
        } elseif ( (
$name=="item")
                    ||(
$name=="image")
                    ||(
$name=="textinput")
                    ||((
$name=="channel") && ($this->_type != "rss")) ) {
            if(
$this->_parse_mode=="channel") {
                
$this->_get_ChannelData$parser );
            }
            
$this->_parse_mode "all";
        }
        
        
$this->_depth[$parser]++; 
        
array_push($this->_tags$name); 
        
$this->_cdepth[$parser]++; 
        
array_push($this->_ctags$name);
    } 

    function 
_get_ChannelData$parser )
    {
                if( empty(
$this->_display_opt["channel"]) OR
                    
$this->_display_opt["channel"] != "hidden") {   
                
$this->_output .= "<tr><td>\n";
                
$this->_output .= '<table border="0" width="100%" class="fase4_rdf_meta" cellspacing="5" cellpadding="2">'."\n";
                
$this->_output .= "<tr><td class=\"fase4_rdf\"><div class=\"fase4_rdf_title\">".htmlspecialchars($this->_citem["title"])."</div></td></tr>\n"
                
$this->_output .= "<tr><td class=\"fase4_rdf\">".strip_tags($this->_citem["description"], "<a>, <img>")."</td></tr>\n";
                
$this->_output .= "<tr><td>&nbsp;</td></tr>\n";
                
$this->_output .= "<tr><td class=\"fase4_rdf\">\n";
                if(
$this->_display_opt["build"] != "hidden") {
                    if(
$this->_citem["lastBuildDate"]){$this->_output .= "build: "$this->_citem["lastBuildDate"]."<br />";}
                } 
                if(
$this->_display_opt["cache_update"] != "hidden" && ( $_update $this->get_cache_update_time()) ) {
                
$this->_output .= "cache update: ".$_update."<br />\n";
                }
                
$this->_output .= "<a href=\"".$this->_citem["link"]."\" ";
                if(isset(
$this->_link_target)) { $this->_output .= "target=\"".$this->_link_target."\" "; }
                
$this->_output .= ">".$this->_cut_string($this->_citem["link"])."</a>";
                
$this->_output .= "</td></tr>\n";
                
$this->_output .= "</table></td></tr>";
                }
                    
$this->_array_channel = array(  "title"=>$this->_citem["title"], 
                                                    
"link"=>$this->_citem["link"],
                                                    
"description"=>$this->_citem["description"],
                                                    
"lastBuildDate"=>$this->_citem["lastBuildDate"]);                
    }

    function 
_endElement($parser$name) { 
        
array_pop($this->_tags); 
        
$this->_depth[$parser]--;
        
array_pop($this->_ctags); 
        
$this->_cdepth[$parser]--;
        switch (
$name) { 
            case 
"item":
                if(empty(
$this->_max_count) OR $this->_item_count $this->_max_count) {
                    if(
$this->_item["title"] != $this->_item["description"
                                            AND 
$this->_item["description"]) {
                        
$this->_output .= "<tr><td class=\"fase4_rdf\">".strip_tags($this->_item["description"], "<a>, <img>")."</td></tr>\n";
                        
$this->_output .= "<tr><td class=\"fase4_rdf\"><a href=\"".$this->_item["link"]."\" ";
                        if(isset(
$this->_link_target)) { $this->_output .= "target=\"".$this->_link_target."\" "; }
                        
$this->_output .= ">".strip_tags($this->_item["title"], "<a>, <img>")."</a></td></tr>\n";

                        
$this->_output .= "<tr><td><hr noshade=\"noshade\" size=\"1\" /></td></tr>\n";
                    } else {
                        
$this->_output .= "<tr><td class=\"fase4_rdf\">\n";
                        
$this->_output .= "<a href=\"".$this->_item["link"]."\" ";
                        if(isset(
$this->_link_target)) { $this->_output .= "target=\"".$this->_link_target."\" "; }
                        
$this->_output .= ">".$this->_item["title"]."</a></td></tr>\n";
                    }
                        
$this->_array_item[] = array(   "title"=>$this->_item["title"], 
                                                        
"link"=>$this->_item["link"],
                                                        
"description"=>$this->_item["description"]);
                        ++
$this->_item_count;
                }
                    
$this->_clear_Items(); 
            break; 
            case 
"image"
                if(
$this->_display_opt["image"] != "hidden" && $this->_item["url"]) {            
                    
$this->_output .= "<tr><td class=\"fase4_rdf\">\n";
                    
$this->_output .= "<a href=\"".$this->_item["link"]."\" ";
                    if(isset(
$this->_link_target)) { $this->_output .= "target=\"".$this->_link_target."\" "; }
                    
$this->_output .= "><img src=\"".$this->_item["url"]."\"";
                if(
$this->_item["width"] && $this->_item["height"]) {
                    
$this->_output .= " width=\"".$this->_item["width"]."\" height=\"".$this->_item["height"]."\"";
                }
                
$this->_output .= " alt=\"".$this->_item["title"]."\" border=\"0\" /></a></td></tr>\n"
                
                    
$this->_array_image[] = array(  "url"=>$this->_item["url"], 
                                                    
"link"=>$this->_item["link"],
                                                    
"width"=>$this->_item["width"],
                                                    
"height"=>$this->_item["height"]);
                    
$this->_clear_Items(); 
                } elseif( 
$this->_display_opt["image"] == "hidden" ) {
                    
$this->_clear_Items();
                }
                                
            break; 
            case 
"channel"
                if(
$this->_display_opt["channel"] != "hidden" AND $this->_item["title"] != "") {   
                    
$this->_output .= "<tr><td>\n";
                    
$this->_output .= '<table border="0" width="100%" class="fase4_rdf_meta" cellspacing="5" cellpadding="2">'."\n";
                    
$this->_output .= "<tr><td class=\"fase4_rdf\"><div class=\"fase4_rdf_title\">".htmlspecialchars($this->_item["title"])."</div></td></tr>\n"
                    
$this->_output .= "<tr><td class=\"fase4_rdf\">".strip_tags($this->_item["description"], "<a>, <img>")."</td></tr>\n";
                    
$this->_output .= "<tr><td>&nbsp;</td></tr>\n";
                    
$this->_output .= "<tr><td class=\"fase4_rdf\">\n";
                if(
$this->_display_opt["build"] != "hidden") {
                    if(
$this->_item["lastBuildDate"]){$this->_output .= "build: "$this->_item["lastBuildDate"]."<br />";}
                }
                if(
$this->_display_opt["cache_update"] != "hidden" && ( $_update $this->get_cache_update_time()) ) {
                    
$this->_output .= "cache update: ".$_update."<br />\n";
                }
                
$this->_output .= "<a href=\"".$this->_item["link"]."\" ";
                if(isset(
$this->_link_target)) { $this->_output .= "target=\"".$this->_link_target."\" "; }
                
$this->_output .= ">".$this->_cut_string($this->_item["link"])."</a>\n";
                
$this->_output .= "</td></tr>\n";
                
$this->_output .= "</table></td></tr>\n";
                }
                    
$this->_array_channel = array(  "title"=>$this->_item["title"], 
                                                    
"link"=>$this->_item["link"],
                                                    
"description"=>$this->_item["description"],
                                                    
"lastBuildDate"=>$this->_item["lastBuildDate"]);
                    
$this->_clear_Items();
                    
$this->_clear_cItems();
            break; 
            case 
"textinput":
                if(
$this->_display_opt["textinput"] != "hidden" && $this->_item["name"] && $this->_item["link"]) {
                    
$this->_output .= "<tr><td class=\"fase4_rdf\">\n";
                    
$this->_output .= "<form action=\"".$this->_item["link"]."\" ";
                    if(isset(
$this->_link_target)) { $this->_output .= "target=\"".$this->_link_target."\" "; }
                    
$this->_output .= "method=\"get\">\n";
                    
$this->_output .= "<div class=\"fase4_rdf_title\">".$this->_item["title"]."</div>";
                    
$this->_output .= strip_tags($this->_item["description"], "<a>, <img>")."<br><br>\n";
                    
$this->_output .= "<input class=\"fase4_rdf_input\" type=\"text\" name=\"".$this->_item["name"]."\">&nbsp;\n";
                    
$this->_output .= "<input class=\"fase4_rdf_input\" type=\"submit\" value=\"go\">";
                    
$this->_output .= "</form>\n";
                    
$this->_output .= "</td></tr>\n";
                    
$this->_array_textinput = array(    "title"=>$this->_item["title"],
                                                        
"name"=>$this->_item["name"],
                                                        
"link"=>$this->_item["link"],
                                                        
"description"=>$this->_item["description"]);
                    
$this->_clear_Items();
                } elseif( 
$this->_display_opt["textinput"] == "hidden" ) {
                    
$this->_clear_Items();
                }
                
            break;            
        } 
    } 

    function 
get_array_channel( )
    {
        return 
$this->_array_channel;
    }
    
    function 
get_array_item( )
    {
        return 
$this->_array_item;
    }
    
    function 
get_array_textinput( )
    {
        return 
$this->_array_textinput;
    }

    function 
get_array_image( )
    {
        return 
$this->_array_image;
    }    
    
    function 
_parseData($parser$text
    { 
        
$clean preg_replace("/\s/"""$text); 
        if (
$clean) { 
            
$text preg_replace("/^\s+/"""$text); 
                if(
$this->_parse_mode == "all") {
                        if ( 
$this->_item[$this->_tags[$this->_depth[$parser]]] ) { 
                           
$this->_item[$this->_tags[$this->_depth[$parser]]] .= $text
                        } else { 
                           
$this->_item[$this->_tags[$this->_depth[$parser]]] = $text;  
                        }
                } elseif (
$this->_parse_mode == "channel") {
                        if ( 
$this->_citem[$this->_ctags[$this->_cdepth[$parser]]] ) { 
                           
$this->_citem[$this->_ctags[$this->_cdepth[$parser]]] .= $text
                        } else { 
                           
$this->_citem[$this->_ctags[$this->_cdepth[$parser]]] = $text;  
                        }                        
                }
        } 
    } 
    
    function 
set_Options$options "" )
    {
        if(
is_array$options )) {
            
$this->_display_opt $options;
            return 
true;
        } else {
            unset(
$this->_display_opt);
            return 
false;
        }
    }
    
    function 
set_table_width$width 400 )
    {
        
$this->_table_width $width;
        return 
true;
    }
    
    function 
get_Options()
    {
        
$options = array(   "image"=>"If 'image' is set to \"hidden\" no image provided by the RDF Publisher will be displayed.",
                            
"channel"=>"If 'channel' is set to \"hidden\" the Channel Meta Data (i.e the Title and the short description regarding the RDF Publisher will not be displayed",
                            
"textinput"=>"If set to \"hidden\" no Input Form will be displayed",
                            
"build"=>"If set to \"hidden\" the Build Date (if provided) of the RDF File will not be displayed",
                            
"cache_update"=>"If set to \"hidden\" the Update Date/Time of the cached Rdf File will not be displayed");
        return 
$options;
    }    

    function 
cache()
    {
        if(!
$this->_cache_dir_ok) {
            
$this->_create_cache_dir();
        }
        if(
$this->_use_dynamic_display == true) {
            
$this->_cached_file md5("dynamic".$this->_remote_file);
            
$this->_cache_type "normal";
        } else {
            
$this->_cached_file md5($this->_remote_file);
            
$this->_cache_type "fast";            
        }
        
        
$_cache_f $this->_cache_dir.$this->_cached_file;

        if ( (!
file_exists($_cache_f)) || (filemtime($_cache_f) < $this->_refresh) || (filesize($_cache_f) == 0)) {

        
$this->_use_cached_file false;

            
clearstatcache();
            if(
$this->_use_dynamic_display == true) {
                
$_rdf = @implode(" "$this->_rdf_data()); // -> proxy
                
if(!$_rdf) {
                    
$this->_throw_exception$this->_remote_file." is not available" );
                }
                
$this->_parse_xRDF$_rdf );
                
$this->_update_cache$_rdf );
                
$data $this->_output;
            } else {
                
$_rdf = @implode(" "$this->_rdf_data()); // -> proxy
                
if(!$_rdf) {
                    
$this->_throw_exception$this->_remote_file." is not available" );
                }                
                
$this->_parse_xRDF$_rdf );
                
$this->_update_cache$this->_output );
                
$data $this->_output;
            }
        } else {

        
$this->_use_cached_file true;        
            if(
$this->_use_dynamic_display == true) {
                
$this->_parse_xRDFimplode(" "file($_cache_f)) );
                
$data $this->_output;
            } else {        
                
$data = @implode(" "file($_cache_f));
            }
        }
        return 
trim($data);
    }   

    function 
_create_cache_dir()
    {
        if(!@
is_dir($this->_cache_dir)) {
            
$arr explode("/"$this->_cache_dir);
            
$c count($arr);
            if(
$arr[0]=="") {
                
$path "/";
            }
            for(
$i 0;$i<$c;$i++)
            {
                if(
$arr[$i]!="") {
                    
$path .= $arr[$i]."/";
                    if(!@
is_dir($path)) {
                       if(!@
mkdir($path0777)) { 
                            
$this->_throw_exception("failed to create directory:<b>".$this->_cache_dir."</b>.<br /><br />Exception on Line: ".__LINE__);
                        return 
false;
                        }                    
                    }
                }
            }
            
$this->_cache_dir_ok true;
            return 
true;
        } else {
            
$this->_cache_dir_ok true;
            return 
true;    
        }
    } 
    
    function 
_update_cache$content "" )
    {
             
$_local = @fopen$this->_cache_dir.$this->_cached_file"w" );
             if(!
$_local) { 
                
$this->_throw_exception"Cannot open ".$this->_cache_dir.$this->_cached_file."<br /><br />Exception at Line: ".__LINE__ ); 
                return 
false;
             }
             if(!
fwrite$_local$content)) { 
                
$this->_throw_exception"Cannot write to: ".$this->_cached_file."<br /><br />Exception at Line: ".__LINE__ ); 
                return 
false;
             }             
             
fclose$_local ); 
             return 
true;
    } 
    
    function 
get_cache_update_time()
    {   
            return (
file_exists($this->_cache_dir.$this->_cached_file))?date("d.m.Y H:i:s"filemtime($this->_cache_dir.$this->_cached_file)):"Cachemiss";
    } 

    function 
get_CacheType()
    {
        return 
$this->_cache_type;
    }
    
    function 
is_cachedFile()
    {
        return 
$this->_use_cached_file;
    }
    
    function 
clear_cache()
    {
        
$dir dir($this->_cache_dir);
        while(
$file=$dir->read()) {
            if(
$file!="." && $file!="..")  {
                if(!@
unlink($dir->path.$file)) {
                    
$this->_throw_exception
                    
"Unable to unlink ".$dir->path.$file
                    
."<br /><br />Exception at Line: ".__LINE__ ); 
                    return 
false;
                }
            }
        }
        
$dir->close();
        return 
true;
    } 

    function 
_cut_string$string$str_len "30" )
    {
        if(
strlen(trim($string))>$str_len) {
        
$string substrtrim($string) , 0$str_len 4);
        
$string .= " ...";
        }
        return 
$string;
    }  
    
    function 
_garbage_collection()
    {
        
srand((double) microtime() * 1000000);
        if (
rand(1100) <= $this->gc_probability) {
            
$dir dir($this->_cache_dir);
            while(
$file=$dir->read()) {
                if(
$file!="." AND $file!=".." AND filemtime($dir->path.$file) <= time() - $this->_refresh )  {
                @
unlink($dir->path.$file);
                }
        }
        
$dir->close();
        } 
    }    

    
/* ==== Proxy/Auth methods ==== */

    
function set_proxy($phost$pport)
    {
     
$this->_use_proxy true;

     if (
$phost != "")
        
$this->_phost $phost;

     if (
$pport != "")
        
$this->_pport $pport;
    }

    function 
set_proxy_auth$pname$ppasswd )
    {
     
$this->_use_proxy_auth true;

     if (
$pname != "")
        
$this->_pname $pname;

     if (
$ppasswd != "")
        
$this->_ppasswd $ppasswd;
    }

    function 
_rdf_data()
    {
      if ( 
$this->_use_proxy == true )
      {

       
$fp fsockopen($this->_phost,$this->_pport);

       if (!
$fp) {
           
$this->_throw_exception$this->_remote_file." is not available with proxy" );
       } else {
        if ( 
$this->_use_proxy_auth == true ) {
           
fputs($fp"GET ".$this->_remote_file." HTTP/1.0\r\n\r\n");
           } else {
           
fputs($fp"GET ".$this->_remote_file." HTTP/1.0\r\nProxy-Authorization: Basic ".base64_encode("$this->_pname:$this->_ppasswd") ."\r\n\r\n");
           }
        }


       for ( 
$i 0; !feof ($fp) ; $i++)
       {
          
$usable_data[$i] = "";
          
$usable_data[$i] = fgets($fp,4096);

        
// PARSE HEADER ---- first line has to be <?xml, second rdf or rss, and third is blank

        // strstr did not fit (ask Rasmus why), so we compare each character   
            
if ( ($usable_data[$i][0] == "<" ) &&
               (
$usable_data[$i][1] == "?" ) &&
               (
$usable_data[$i][2] == "x" ) &&
               (
$usable_data[$i][3] == "m" ) &&
               (
$usable_data[$i][4] == "l" ) ) {
                    
$usable_data[0] = $usable_data[$i]; // save current field
                      
$i 1// just reset array to start
              
}

        
// there seems to be proxystuff after the <?xml....we delete this
            
if ( (
               (
$usable_data[$i][0] == "<" ) &&
               (
$usable_data[$i][1] == "r" ) &&
               (
$usable_data[$i][2] == "d" ) &&
               (
$usable_data[$i][3] == "f" ) &&
               (
$usable_data[$i][4] == ":" 
               )
               ||
               (
               (
$usable_data[$i][0] == "<" ) &&
               (
$usable_data[$i][1] == "r" ) &&
               (
$usable_data[$i][2] == "s" ) &&
               (
$usable_data[$i][3] == "s" )
               ) 
            ) {

                
$usable_data[1] = $usable_data[$i]; // save current field
                
$usable_data[2] = "\n";
                
$i 2// just reset array to start
          
}
       }

       
fclose($fp);
       return 
$usable_data;
     } else {
        return (
file($this->_remote_file));
     }
   }    
// END _rdf_data()
}   // END class
?>
подготовительная часть пройдена, начинаем забирать новости...
 
 
SerV
Продвинутый
Default
0

PHP Code:
<!DOCTYPE html 
     PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
     "DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
   <title>RSS-News </title> 
    <style type="text/css">
    body {
        font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;
        font-size: 11px;
        margin-left : 20px;
        margin-top : 20px;    
        background-color: #ffffff;         
    }    
    .fase4_rdf {
        font-size: 11px;
        font-family: verdana, arial, helvetica, sans-serif;
    }
    .fase4_rdf_title {
        font-size: 12px;
        font-weight : bolder;    
    }
    .fase4_rdf_input {
        border: dotted 1px #6699cc; 
        font-size: 10px;
        font-family: verdana, arial, helvetica, sans-serif;
        background-color: #f5f5f5;   
    }
    .fase4_rdf_meta {
        background-color: #f5f5f5;  
    }
    A:link {
        color: #003366;
    }
    A:hover {
        color: #6699cc;
        text-decoration: none;
    }
    A:visited {
        color: #003366;
    }   
    .input {
        font-family: verdana, arial, helvetica, sans-serif;
        font-size: 12px;
        background-color: #4870a0;
        border-color: #6890b8;
    }
    .inputsubmit {
        font-family: verdana, arial, helvetica, sans-serif;
        font-size: 11px;
        background-color: #4870a0;
        border-color: #6890b8;
    }    
   </style>    
</head>
<body>
<?php 
error_reporting
(0);
        include(
"rss.php");
        
$rdf = new fase4_rdf;
        
$rdf->use_dynamic_display(false);
        
$rdf->set_Options( array("textinput"=>"hidden") );        
        
$rdf->parse_RDF("http://news.yandex.ru/internet.rss");
        
$rdf->finish();
?>
</body>
</html>

парсер позволяет делать "статику".
т.е. пользователю передается хакэшированные уже новости.
к примеру каждые 30 минут скрипт снимает новости с заказанных сайтов и кладет на диск - а потом выдает из кэша по вашему запросу.

статический кэш может хранитсья в 2-х видах.
1) файл вида: 2756q2r62697n7n6s6r2r6r6
2) news.html

вопрос: КАК это импортировать в ОБЪЯВЛЕНИЕ форума?



может быть через MySQL как?

Гуру Воблы подскажите пожалуйста :)


WBR, Serg.

Last edited by SerV : 09-07-2006 at 07:59 PM.
 
 
Klonic_J
Продвинутый
Default
0

up!

интересует счастливая концовка этой темы
 
 
mikluho
Простоузер
Default
0

Quote:
Originally Posted by Klonic_J
up!

интересует счастливая концовка этой темы
аналогично
 
 
SerV
Продвинутый
Default
0

Quote:
Originally Posted by mikluho
аналогично
к сожалению гуры воблы так и не откликнулись.
сделал просто каждые новости отдельной страницей
(отдельно авто, отдельно интернет, отдельно софт и т.д.)

далее просто сделал в нужном раздлеле форума "объявление", и внутри объявления разрешил HTML. ну и просто мета-редиректом перенаправляю пользователей на нужную страницу, когда они открывают объявление.

жаль конечно, никто не хочет развить тему.
иметь новости в самом объялении было гораздо интереснее.
 


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off




All times are GMT +4. The time now is 11:27 AM.


Powered by vBulletin® Version 3.5.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.