58154 ScanImage72 (2)

58154 ScanImage72 (2)



Tworzymy prosty czytnik RSS


Znamy już najważniejsze funkcje PHP związane z językiem XML. Możemy więc stworzyć praktyczny skrypt na naszą stronę WWW. Jego zadaniem będzie pobieranie plików RSS z zewnętrznych serwerów, a następnie wyświetlanie ich zawartości na naszej witrynie. Przed przystąpieniem do realizacji skryptu musimy zapoznać się z budową pliku RSS -----------------


1 Tworzymy plik pokazJRSS.php i wpisujemy do niego kod skryptu •._Skłąda_się_on_ z jednej funkcji o nazwie pokazRSS(), która wymaga podania dwóch argumentów 43.


<?PhP

function pokazRSS{ $adros, $ilosc=5){

$xraldata='';

$plik = fopen( $adres, "r";);

while (Ifeof($plik)) $xmldata.=fgets($plik,1024); 4^1 fclo.se ($plik) ?

$xmlparser=xml__parser_create();

xml _parse_into_ątruot($xmlparser,$xmldata,$volucs,$indexes); €1 xtttl_parser_free($xmlparser);


$tytul=


$opis='$link=


$wynik=


w zmiennej $xmldata € Następnie tworzymy nowy parser XML i wywołujemy funkcję xml_parse_into_struct() 41-Dzięki temu do zmiennej $values zostanie zapisana tablica z zawartością pliku XML.

3 Na początku analizy tablicy $values powinniśmy pobrać dane o samym kanale, a więc informacje o tytule kanału, jego opisie i adresie. Czyścimy więc zmienne 401 i wykonujemy pętlę while Cl.

4 W pętli while przeglądamy wiersze tabeli aż do napotkania znacznika <item>. Pobieramy treść zawartą w znacznikach <tdtle>, <description> i <link> (jeśli się znajdują) i zapisujemy w zmiennych $tytul, $opis oraz $link.


Jak zbudowany jest dokument RSS

<?xral version=i"i. O" encoding='’UTF-8" ?> j._^».<rus yorsion=”2.0">

<channel>

<title>Serwis informacy^ ny</1itle> <link>http://www.mojaStrona.pl</link> <deBcriptioa>Serwis informacyjny</descr'iption> <item> €    «

<title>Aktuali2acja stronyJ</titlo>

<1ink>http: /'/www. ino j aStrona. pl/ X. htral</ link> <doscription><lfCDATA[Dzisiaj dokonaliśmy kolejnej <strong>aktualizacji</strong>


nasze; </item> </channel> •</ras>


izej strony.1]></description>

°<i


Si=0; Cl


while (issat($values[$i]('tag']) && $values($i]['tag') 1='.ITEM'){ if: ($values[$i) (■' tag' ]««'TITŁE') $tytul=$values[ $i ] ( 'vallie* ]; i£ ($values[$ijf'tag']-«'DESCRIPTION') $opis»$values[$i]['value'] if ($values($ij [' tag']==>'LIt'rK') $link°$values($i] (' value');

$i++j


•J..


$i++;

ęwynik.='RSS:


<a href=" ’. $ link. '    . $tytul.' < / a><br />f.;


while ($i<count{$values) && $ilosć>0){ $wiod__tytul=''; $wiad_opis“' ' ; $wiad_link='


$wiad_jpubd=


while (i88Qt($values[$i]('tagfJ) && !($yalues[$l] ['tag' ]=='IT12M'

&£. $values[$ij [ 'type' ]"»>='• open' )){

if ($values[$ij['tag'j=='TITLE') $wiad__tytul=$values[$ij['value']; if (isset($yalues{$ij{'valueJJ))< if ($values[$i] l'tag'3^'TITLE') $wiad_tytul=$values[$i}('valuełJ; if {$values[$i][ 'tag' J =' DESCRIPTIOH' ) $wiad__opis=$valuosf $i]('valU9* )? if ($values[$i)['tag'J“'LINK') $wiad_link=$values[$i)['value'1; if ($valuesi$iH'tag' 1^'PUBDATE'j $wiadjpubd=$values[ $i)['yalue' ];

>’i++! ^ if {$wiad_pubd 1 =' ' ) $wiad_pubd=' (' .date( 'd ,strtotjjne($wiadjpubd) $wynik.“'<div><b>*.$wiad_tytul.* *.$wind_j?ubd.*</b><br />'. b

$wiad_opis.' <a href=J'' . $wiad_link. *" >Więce j</axhr /></div>';

$.i++;

ęiłosc—; Cl rotu rn ($wfoik)?

>

?>


om


5 Po napotkaniu znacznika <item> pętla 43 przerywa swoje działanie. Tworzymy więc pierwszy nagłówek odpowiedzi naszej funkcji (czyli tego, co nasza funkcja będzie zwracała po wywołaniu 43) i dopisujemy go do zmiennej

$wynik43-

6 Następnie w pętli 4 rozpoczynamy dalszą analizę tablicy (Ekspert zachęca do samodzielnego [ sprawdzenia, jak działa kod •).


   Każdy dokument RSS objęty jest parą znaczników <rss> </rss> ®.

•    Wewnątrz jednego dokumentu RSS może być przesyłanych wiele różnych kanałów informacyjnych (na przykład wiadomości z różnych dziedzin). Kanał objęty jest znacznikami 41 o raz 43-

•    W ramach kanału przekazywane są informacje o nim: tytuł kanału (znacznik <title>), adres do strony WWW, z której pobierane są wiadomości (znacznik <link>), krótki opis tej strony lub kanału (znacznik <description>) oraz inne dane (patrz tabela poniżej).

•    Kolejne wiadomości w ramach danego kanału znajdują się pomiędzy znacznikami <item> 43 I </łtem> 43-

•    W ramach jednej wiadomości można umieścić między innymi: tytuł wiadomości (znacznik <title> 41). adres do pełnej wersji danej wiadomości (znacznik <llnk>), treść wiadomości (znacznik <description>) oraz inne dane (patrz tabela poniżej).

•    Jeśli wewnątrz wiadomości chcemy wyświetlić znaczniki języka HTML lub też inne znaki standardowo niedozwolone w XML. obejmujemy je specjalnymi sekwencjami rozpoczynającymi się od znacznika specjalnego <![CDATA[ i kończącego się znacznikiem ]]> 41-


1


i Dodatkowe znaczniki RSS


Znacznik

<lasffiuijdDate>

<language>

<copyright>

<pubDate>

<category>

<author>


Występuje pomiędzy

<channel> i </channel> <channel> i </channel> <channel> i </channel> <item> i </item> <item> i </item> <item>i</item>



liej modyfikacji pliku Język kanału

Właściciel praw autorskich Data publikacji wiadomości Kategoria wiadomości Autor wiadomości


<7php

inolude('r88_reader.php'); echo pokazRSS('http://www.komputerświat.pl/ rss/news.kmi',5);

I!__


W pierwszym będziemy mogli umieścić adres pliku RSS, a w drugim określić, ile wiadomości z tego pliku chcemy wyświetlić (a dokładniej, ile jeszcze wiadomości pozostało do wyświetlenia).


I W pierwszej kolejności wczytujemy całą i zawartość pliku i zapamiętujemy ją


PS


i Wady skryptu


Skrypt, który napisaliśmy razem z Ekspertem, spełnia swoje zadanie, jednak nie jest wolny od wad. Jedną z nich jest pobieranie wiadomości z innych serwisów przy każdym wyświetleniu naszej strony, co może znacząco obciążyć serwer I spowolnić otwieranie naszej witryny. Ekspert zachęca więc do dokonania niezbędnych poprawek - na przykład dopisania kodu, dzięki któremu wiadomości będą pobierane tylko raz dziennie i zapisywane do pliku na naszym serwerze. Dzięki temu przy wyświetleniu strony wiadomości nie będą ściągane z innego serwera, tylko odczytywane z tego pliku.


Pętla przerwie swoje działanie po odnalezieniu liczby wiadomości określonej w nagłówku funkcji.

7 Na koniec formatujemy jeszcze datę modyfikacji na bardziej czytelną 41- Zmniej-


szamy także licznik $ilosc43. który mówi nam, ile jeszcze wiadomości mamy odnaleźć.

8 Aby wykorzystać funkcję pokazRSS(),

tworzymy prosty plik index.php •.......

(pełny kod na płycie CD Eksperta) i wywołujemy go w przeglądarce. Po chwili na

wiadomości

RSS 4 z serwisu o adresie •. Zmieniając "ten adres, można pobrać aktualności z innych serwisów RSS.    KW ■

m


RSS: Komputer ŚWIAT ■ HEWS

Młodzi ludzie clir a glosować przez internet (04.01.2007) Stowarzyszenie Polska Młodych chce doprowadzić do tego. by Polacy mogli glosować w wyborach parlamentarnych. prezydenckich, do Parlamentu Europejskiego i w referendach przez internet Stowarzyszenie... Więcej

Neoshndn przyśpiesza (04.01.2007)

Od 8 stycznia Telekomunikacja Polska nie podnosząc ceny zwiększy części swoich dotychczasowych klientów prędkość transmisji danych w usłudze Neostrada. Ci, którzy mają Neostradę o prędkości do 640... Więcej

Biedy* w oprogramowaniu Microsoftu (05.01.2007)

Wykryte właśnie błędy w zabezpieczeniu oprogramowania biurowego Microsoft Word i multimedialnego Windows Media Player mogą ułatwić hakerom przejmowanie kontroli nad komputerami Jedna z luk w... Więcej


UJ Warto zajrzeć...


Książki:

#    XML na poważnie - Przemysław Kazienko, Krzysztof Gwiazda, Wydawnictwo Helion. Gliwice 2002, cena 85 zt

#    PHP Leksykon funkcji - L Greant. T. Wilson, B. Michlitsch,

G. Merrall, tłum. Aleksander Paleczny, Wydawnictwo Translator s.c.. Warszawa 2002, cena 57,20 zi

Adresy WWW:

O www.w3schools.com/dtd

www.w3.org/TR/xhlmlU/DTD/xhtmlll.dtd

©http://pl.php.net/manual/pl/funotion.xml-parser-set-option.php

#    http://rss.mrok.org

9 www.rssboard.org/rss-speclflcation


eKspert


LUTY 2007 69



Wyszukiwarka

Podobne podstrony:
page0166 156    LITERATURA I WIEDZA LUDÓW EUFRATEJSKICH Znamy już pobieżnie literatur
Siatkarki AZS AGH obroniły mistrzowski tytuł Znamy już wyniki finału rozgrywek Małopolskiej Ligii
cz8 Programowanie Znamy już przyczynę problemu. Jak go rozwiązać? W posiadanej przez nas wersji Jak
43722 Skanuj9 Oddychanie w zmienionych warunkach wodą, w warunkach podwyższonego ciśnienia. Dziś do
2/2 (Tworzywa SztucznePrzemyśle 0 KROK OD KONKURENCJI - JUŻ DZIŚ ZAPRASZAMY NA TARGI PLASTPOL
samogłoski Zapamiętaj!! Głoski dzielimy na samogłoski i spółgłoski. Znamy już takie samogłoski:a. 2.
s401 Administrowanie użytkownikami i grupami 401 Teraz, kiedy znamy już prawa dostępu do plików, zro
prapol109 mymi i pasmami linij falistych (tabl. XXI, 3) i 5), jakie znamy już ze starszego podokresu
89782 ScanImage65 (2) ! TWORZYMY TRÓJWYMIAROWĄ GRĘ, CZ. 1Ekspert prezentuje Przygotowujemy środowisk
brykła roku 02.04.2011 09:08BRYŁA ROKU 2010 ■ zwyciężył pawilon! * Lubię to! 234 Znamy już zwycięzcę
CCF20091201001 JESTEM Jestem Polką, dziewczynką małą Jestem Polakiem, chłopcem małym Ale... znamy j
Najlepsi młodzi reportażyściPOD PATRONATEM WYBORCZEJ Znamy już finalistów Ogólnopolskiego Turnieju
G punkt jpeg Szukałem już palcem Szukałem pisiorem Szukałem językiem I wibratorem Pyt
Humor z arkuszy egzaminacyjnych (według oryginalnego zapisu) Już po egzaminach gimnazjalnych możemy

więcej podobnych podstron