Skapa en RSS Reader i PHP och Javascript
Torsdagen den 25 januari 2007 Eftersom vi är på en blogg (Weblog) och fildelning RSS har blivit en standard, här är några enkla kod utdrag för att hjälpa manipulera RSS-feed.
Vi vet alla att filerna är RSS - slutet - enkel textfil som uppfyller standarden XML. Härav följer att manipulera är inte så komplicerat.
Första klass som skall införas i PHP, kan du läsa en fil från en RSS-adress, vilket gör att du kan bearbeta resultaten och upprepas av någon part.
- (klass CRSSREADER
- = false ; insideitem $ var = false;
- = "" ; $ Var tagg = "";
- = "" ; var $ title = "";
- = "" ; var $ beskrivning = "";
- = "" ; var $ länk = "";
- / /
- = "" ; var $ url = "";
- ; var $ xml_parser;
- / /
- $url ) { CRSSREADER funktion ($ url) (
- = $url ; $ This -> url = $ url;
- )
- / /
- getUrl funktion () (
- / /
- ; $ Ch = curl_init ();
- ; // set to zero for no timeout $ Timeout = 5; / / noll för ingen timeout
- , CURLOPT_URL, $this -> url ) ; curl_setopt ($ ch, CURLOPT_URL, $ this -> url);
- , CURLOPT_RETURNTRANSFER, 1 ) ; curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, 1);
- , CURLOPT_CONNECTTIMEOUT, $timeout ) ; curl_setopt ($ ch, CURLOPT_CONNECTTIMEOUT, $ timeout);
- $ch ) ; $ File_contents = curl_exec ($ ch);
- ) ; curl_close ($ ch);
- / /
- $file_contents ) ; avkastning ($ file_contents);
- )
- / /
- $parser , $name , $attrs ) { funktion startElement ($ parser, $ namn, $ attrs) (
- $this -> insideitem ) { if ($ this -> insideitem) (
- = $name ; $ This ->-taggen = $ namn;
- ( $name == "ITEM" ) { ) Elseif ($ namn == "ITEM") (
- = true ; $ This -> insideitem = true;
- )
- )
- / /
- $parser , $name ) { funktion endElement ($ parser, $ namn) (
- $name == "ITEM" ) { if ($ namn == "ITEM") (
- -> link , "url" => $ this -> länk
- -> description ) ; "beskrivning" => $ this -> beskrivning);
- = "" ; $ This -> title = "";
- = "" ; $ This -> beskrivning = "";
- = "" ; $ This -> länk = "";
- = false ; $ This -> insideitem = false;
- )
- )
- / /
- $parser , $data ) { characterData funktion ($ parser, $ data) (
- $this -> insideitem ) { if ($ this -> insideitem) (
- $this -> tag ) { switch ($ this ->-taggen) (
- : fall "TITLE":
- .= $data ; $ This -> titel .= $ data;
- break;
- : fall "Innehåll: KODATS":
- .= $data ; $ This -> beskrivning .= $ data;
- break;
- : fall "Länk":
- .= $data ; $ This -> länk .= $ data;
- break;
- )
- )
- )
- / /
- funktion får () (
- / /
- $this -> xml_parser , "startElement" , "endElement" ) ; xml_set_element_handler ($ this -> xml_parser, "startElement", "endElement");
- $this -> xml_parser , "characterData" ) ; xml_set_character_data_handler ($ this -> xml_parser, "characterData");
- -> getURL ( ) ; $ Data = $ this -> getUrl ();
- xml_get_error_code ( $this -> xml_parser ) ) , xml_error_string (xml_get_error_code ($ this -> xml_parser));
- $this -> res ) ; avkastning ($ this -> res);
- )
- )
Använd denna klass att formatera din HTML-utdata är egentligen enkel. Här är ett exempel på dess användning:
- ; require_once "crssreader.php";
- CRSSREADER ( "http://www.undolog.com/?feed=rss2&cat=1" ) ; $ Rss = nya CRSSREADER ( "http://www.undolog.com/?feed=rss2&cat=1");
- / /
- -> get ( ) ; $ R = $ rss -> få ();
- / /
- $i = 0 ; $i <sizeof ( $r ) ; $i ++ ) { for ($ i = 0; $ i <sizeof ($ r); $ i + +) (
- )
Klassen är tillräckligt resultat, även om mycket beror på inställningarna för den källan. Om du försöker dra ut foder från en webbplats som har angetts som högsta antalet 100 foder, den tid som behövs för att vara något "mer än en blogg som har inrättats för att foder 5!
Några - såsom FeedBurner - frågan tjänster som gör precis det som föreslås av PHP klass ovan, men använder Javascript. Nu ser vi hur vi skapar en serivizio att - med hjälp av Javascript - det kan läsa RSS-flöde.
Vad vi gör är att utnyttja klassen PHP som föreslås ovan, utan att köra i att analysera Javascript! Hur? Vi skapar en sida index.php och mata in följande kod:
- ; require_once "crssreader.php";
- $sIn , $iNumCar = 16 ) { cutString funktion ($ synd, $ iNumCar = 16) (
- $sOut ) ; avkastning ($ sout);
- )
- [ "url" ] ; $ Url = $ _GET [ "url"];
- [ "max" ] ; $ Max = $ _GET [ "max"];
- CRSSREADER ( $url ) ; $ Rss = nya CRSSREADER ($ url);
- -> get ( ) ; $ R = $ rss -> få ();
- " ; $ O = "document.write ( '<ul>'); \ n";
- $i = 0 ; $i <sizeof ( $r ) ; $i ++ ) { for ($ i = 0; $ i <sizeof ($ r); $ i + +) (
- $i > $max ) break ; if ($ i> $ max) break;
- " . $t . " \" target= \" _blank \" href= \" " . $u . " \" >" .cutString ( $t , 32 ) . "</a></li>'); \n " ; $ O .= "document.write ( '<a <li> title = \". $ T. "\" target = \ "_blank \" href = \ ". $ U." \ ">". CutString ($ T, 32). "</ A> </ li> '); \ n";
- )
- ; $ O .= "document.write ( '</ ul >');";
- / /
Gjord! Nu om du har placerat den här koden på din webbplats (miodominio.com till exempel), enligt RssReader mappen, du kan släppa din tjänst web2.0. I praktiken vi simulerade ett Javascript utan att egentligen skapa den. Till exempel med hjälp av följande skript kan leverera utdata från en feed-rss via en pseudo-PHP Javascript. På sidan riktar sig till den punkt där vi får vår lista med inlägg, bara infoga:
Som ni ser gjorde jag säker på att vidarebefordra adressen till foder och ett högsta värde (max) i pseudo-GET-förfrågan Javascript - som inte finns! Stark!



















undolog »Blog Archive» Dynamic JavaScript och CSS Arkiv sa:
[...] Dynamic JavaScript och CSS Arkiv Tags: ASP, ColdFusion, CSS, HTML, HTTP, Internet, JavaScript, JSP, PHP, server-scripting, utveckling, webbserver, web2.0Nel Post Skapa en RSS Reader i PHP och Javascript indirekt mötte vi en mycket intressant teknik som användes för att skapa - i praktiken - en Javascript-filer från PHP. [...]
p-piller sa:
Jag letade efter info om detta och har hänt här, tjänsten är föråldrad men jag tror att det fortfarande är giltigt, är ganska oerfaren på detta område, vad jag skulle vilja ställa är om denna metod kan användas för en webbplats, vare sig forum gästbok blogg, kort sagt, alla webbsida.
eller så kan du tjäna den särskilda ordningen?
tack
Giovambattista Fazioli sa:
@ Oral p-piller: den enda steg du måste följa är närvaro på din webbserver PHP. För övrigt finns det inga särskilda restriktioner. När koden är föråldrad. Om du kan hjälpa PHP bibliotek är helt klart det bästa och tolka XML-bästa på senare versioner av PHP. Hur det kan vara ett nummer "gamla" du kan lita på att fungerar på alla servrar som har installerat minst PHP 4.1
p-piller sa:
Åh tack! prova andra saker du säga senaste, men jag misstänker att de flesta är nya och är svårare! cmq försöka, tack så mycket för ditt svar.