Créer un lecteur RSS en PHP et Javascript

Alors que nous sommes sur un blog (weblog) et l'échange de fichiers RSS est devenu la norme, voici quelques extraits de code simple et utile pour manipuler les aliments-RSS.
Nous savons tous que les fichiers RSS sont - à la fin - de simples fichiers texte conforme à la norme XML. Il s'ensuit que les manipuler n'est pas si complexe.

La première classe, nous présentons, en PHP, vous pouvez "lire" un fichier RSS à partir de n'importe quelle adresse, vous permettant de traiter le résultat et de le prendre n'importe où.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
{Classe CRSSREADER

= false ; insideitem $ var = false;
= "" ; var $ tag = "";
= "" ; var $ title = "";
= "" ; var $ description = "";
= "" ; var $ link = "";
/ /
= "" ; var $ url = "";
; var $ xml_parser;
/ /
= array ( ) ; var $ res = array ();

$url ) { Fonction CRSSREADER ($ url) {
url = $url ; $ This -> url = $ url;
}
/ /
la fonction getURL () {
/ /
curl_init ( ) ; $ Ch = curl_init ();
5 ; // set to zero for no timeout $ Timeout = 5; / / mise à zéro pour les pas de timeout
$ch , CURLOPT_URL , $this -> url ) ; curl_setopt ($ ch, CURLOPT_URL, $ this -> url);
$ch , CURLOPT_RETURNTRANSFER , 1 ) ; curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, 1);
$ch , CURLOPT_CONNECTTIMEOUT , $timeout ) ; curl_setopt ($ ch, CURLOPT_CONNECTTIMEOUT, $ timeout);
curl_exec ( $ch ) ; $ File_contents = curl_exec ($ ch);
$ch ) ; curl_close ($ ch);
/ /
$file_contents ) ; retour (file_contents $);
}
/ /
$parser , $name , $attrs ) { startElementQ fonction ($ parser, $ name, $ attrs) {
$this -> insideitem ) { if ($ this -> insideitem) {
tag = $name ; $ This -> tags = $ nom;
( $name == "ITEM" ) { } If ($ nom == "POINT") {
insideitem = true ; $ This -> insideitem = true;
}
}
/ /
$parser , $name ) { endElement fonction ($ parseur, $ nom) {
$name == "ITEM" ) { if ($ nom == "POINT") {
res [ ] = array ( "title" => $this -> title , $ This -> res [] = array ("title" => $ this -> titre,
$this -> link , "URL" => $ this -> lien ,
$this -> description ) ; "Description" => $ this -> description);

title = "" ; $ This -> title = "";
description = "" ; $ This -> description = "";
link = "" ; $ This -> lien = "";
insideitem = false ; $ This -> insideitem = false;
}
}
/ /
$parser , $data ) { Fonction CharacterData ($ parser, $ data) {
$this -> insideitem ) { if ($ this -> insideitem) {
$this -> tag ) { switch ($ this -> tags) {
: cas, "title":
title .= $data ; $ This -> titre .= $ data;
break;
: cas "contenu: encoded"
description .= $data ; $ This -> Description des données .= $;
break;
: cas, «lien»:
link .= $data ; $ This -> lien .= $ data;
break;
}
}
}
/ /
fonction get () {
res = array ( ) ; $ This -> res = array ();
xml_parser = xml_parser_create ( ) ; $ This -> xml_parser = xml_parser_create ();
/ /
$this -> xml_parser , $this ) ; xml_set_object ($ this -> xml_parser, $ this);
$this -> xml_parser , "startElement" , "endElement" ) ; xml_set_element_handler ($ this - xml_parser> ", startElementQ", "endElement");
$this -> xml_parser , "characterData" ) ; xml_set_character_data_handler ($ this - xml_parser> ", CharacterData");

$this -> getURL ( ) ; Données $ = $ this -> getURL ();

$this -> xml_parser , $data , true ) xml_parse ($ this -> xml_parser, $ data, true)
sprintf ( "XML error: %s at line %d " , ou de mourir ( sprintf ("erreur XML:% s à la ligne% d",
xml_get_error_code ( $this -> xml_parser ) ) , xml_error_string ( xml_get_error_code ($ this - xml_parser>)),
$this -> xml_parser ) ) ) ; xml_get_current_line_number ($ this - xml_parser>)));

$this -> xml_parser ) ; xml_parser_free ($ this - xml_parser>);

$this -> res ) ; return ($ this -> res);
}
}

Utilisez cette classe pour reformater votre sortie HTML est vraiment facile. Voici un exemple de son utilisation:

1
2
3
4
5
6
7
8
9
10
11
; require_once "crssreader.php";

new CRSSREADER ( "http://www.undolog.com/?feed=rss2&cat=1" ) ; $ Rss = new CRSSREADER ("http://www.undolog.com/?feed=rss2&cat=1");
/ /
$rss -> get ( ) ; R $ = $ rss -> get ();
/ /
. sizeof ( $r ) ; echo "Nombre d'articles:". sizeof ($ r);

$i = 0 ; $i < sizeof ( $r ) ; $i ++ ) { for ($ i = 0; $ i < sizeof ($ r); $ i + +) {
. $r [ $i ] [ "title" ] . "" ; echo "<h1>." $ r [$ i] ['title']. '"
}

La classe est assez puissant, mais beaucoup dépend des paramètres de la source. Si vous essayez de tirer le flux d'un site qui a mis 100 comme le nombre maximum de flux, le temps nécessaire sera un «peu plus d'un blog qui a mis un maximum de 5 flux RSS!

Certains - les services de libération qui font exactement celle proposée par classe PHP ci-dessus, mais utiliser Javascript - comme FeedBurner. Maintenant, nous voyons comment créer un services que cela - l'utilisation de JavaScript - vous pouvez lire en flux RSS.

Ce que nous allons faire est de tirer profit de la classe PHP proposé ci-dessus, sans analyse en Javascript! Comment? Créer un fichier index.php page et insérez le code suivant:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
; require_once "crssreader.php";

$sIn , $iNumCar = 16 ) { Fonction cutString ($ péché, $ iNumCar = 16) {
substr ( stripslashes ( $sIn ) , 0 , $iNumCar ) ; Sout $ = substr ( stripslashes ($ gauche), 0, $ iNumCar);
strlen ( $sIn ) > $iNumCar ) $sOut .= "..." ; if ( strlen ($ gauche)> $ iNumCar) $ sOut .= "...";
$sOut ) ; retour (sOut $);
}

$_GET [ "url" ] ; $ Url = $ _GET ["url"];
$_GET [ "max" ] ; $ Max = $ _GET ["max"];

new CRSSREADER ( $url ) ; $ Rss = new CRSSREADER ($ url);
$rss -> get ( ) ; R $ = $ rss -> get ();
"document.write('<ul>'); \n " ; 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;
htmlspecialchars ( trim ( $r [ $i ] [ "title" ] ) ) ; $ T = htmlspecialchars ( garniture ($ r [$ i] ['title']));
htmlspecialchars ( trim ( $r [ $i ] [ "url" ] ) ) ; $ U = htmlspecialchars ( garniture ($ r [$ i] ['url']));
"document.write('<li><a title= \" " . $t . " \" target= \" _blank \" href= \" " . $u . " \" >" . cutString ( $t , 32 ) . "</a></li>'); \n " ; O $ .= "document.write ('<a title = <li> \" ". $ T" _blank \ "target = \" \ "href = \" ". $ U." \ ">". CutString ($ t, 32) "</ a> </ li> ') \ n".;
}
"document.write('</ul>');" ; O $ .= "document.write ('</ ul >');";
/ /
; echo $ o;

Terminé! Maintenant, si vous avez placé ce code sur votre site web (miodominio.com par exemple), sous le RssReader dossier, vous pouvez libérer vos services web2.0. Dans la pratique, nous avons simulé un Javascript sans vraiment créer. Par exemple, en utilisant le script suivant peut produire une sortie d'un flux RSS à travers une pseudo-Javascript-PHP. Dans la page cible, au point où nous voulons élever nos liste de flux, il suffit d'entrer:

1
2
3
4
p > < p > Flux de test </ p >
< div >

</ div >

Comme vous le voyez je me suis assuré de passer l'url du flux, et une valeur maximum (max) dans le pseudo-GET Javascript demande - qui n'existe pas! Forte!

6 commentaires à "Création d'un lecteur RSS en PHP et Javascript»

  1. 29 janvier 2007 undolog »Blog Archive» CSS dynamique et les fichiers JavaScript :

    [...] Dynamique fichiers JavaScript et CSS Tags: ASP, ColdFusion, CSS, HTML, HTTP, Internet, JavaScript, JSP, PHP, script, le serveur de développement, les serveurs Web, Post Créer web2.0Nel un lecteur RSS en PHP et Javascript indirectement, nous avons rencontré une technique très intéressante qui a permis de créer - en pratique - à partir d'un fichier PHP JavaScript. [...]

  2. 5 juin 2008 Pill :

    Je cherchais des infos sur cela et ont passé ici, le poste est dépassée mais je pense que c'est toujours valable, je suis assez inexpérimenté dans ce domaine, ce que je voudrais poser est de savoir si cette méthode peut être utilisée pour tout livre d'or du site, blog ou forum, bref, toute page Web.
    ou vous pouvez servir des mesures spéciales?
    Merci

  3. 5 juin 2008 Giovambattista Fazioli :

    @ Pilule: les seules choses que vous devez suivre sont la présence de PHP sur votre serveur Web. Pour le reste il n'ya pas de restrictions particulières. Comme le code est obsolète. Si vous pouvez aider les bibliothèques PHP sont sûrement les plus actuelles et les meilleures parser XML dans les versions récentes de PHP. Toutefois, un code est "daté" que vous pouvez être assuré que cela fonctionne sur tout serveur qui a installé au moins PHP 4.1

  4. 5 juin 2008 Pill :

    oh merci! Je vais essayer les autres trucs plus récents que vous dites, mais je soupçonne que les plus récents et plus ils sont difficiles! CMQ essayer, merci pour la réponse.

  5. 14 juillet 2011 wolfff81:

    J'obtiens cette erreur:

    1
    Fatal error: Call to undefined function curl_init () in D: \ Inetpub \ webs \ ... \ crssreader.php sur la ligne 21
  6. 14 juillet 2011 Giovambattista Fazioli :

    @ Wolfff81: La bibliothèque cURL n'est pas toujours installé sur tous les serveurs Web. Vous devriez contacter l'administrateur de votre site et d'installer et / ou l'activer.

Laisser un commentaire

XHTML TAG PERMIS: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> CODE D'INSERTION:
 <pre></pre> // blocco generico <code></code> // blocco generico [cc_actionscript][/cc_actionscript] // Actionscript [cc_actionscript3][/cc_actionscript3] // Actionscript 3 [cc_css][/cc_css] // CSS Style Sheet [cc_html][/cc_html] // HTML [cc_js][/cc_js] // Javascript [cc_objc][/cc_objc] // Objective-C [cc_php][/cc_objc] // PHP [cc_sql][/cc_sql] // SQL 


Arrêtez SOPA