| |
|
Voir le sujet précédent :: Voir le sujet suivant
|
| Auteur |
Message |
| |
|
mego WRInaute impliqué

Inscrit le: 07 Mar 2006 Messages: 326 Localisation: fr / es
|
Posté le : Jeu Sep 07, 2006 17:21 Sujet du message: Newsletter à partir de flux RSS |
|
|
Hello,
Je suis à la rechercher d'un petit script (php) qui me permettrai de créer une newsletter automatiquement à partir d'un flux RSS. J'aimerai quelque chose que je puisse gérer moi même (pas de zookoda ou autre solution externe).
Quelqu'un pourrait il me renseigner la dessus ?
Merci |
|
| |
|
 |
1000apps WRInaute occasionnel

Inscrit le: 18 Mai 2004 Messages: 121 Localisation: Larmor-Plage, France
|
Posté le : Jeu Sep 07, 2006 18:14 Sujet du message: Newsletter à partir de flux RSS |
|
|
Voici un source que tu pourras modifier/adapter à ton besoin :
| Code: |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"> <?php
////////////////////////////////////////////
// PHPRSSReader.php - d'après HTML Reader par Jorge Solis // traduit et simplifié par Pierre Rouarch pour tenir en un fichier
//////////////////////////////////////
class xml {
var $parser; function parse($xmlstring){
$this->parser = xml_parser_create();
xml_set_object($this->parser, $this);
xml_parser_set_option($this->parser, XML_OPTION_CASE_FOLDING, false);
xml_set_element_handler($this->parser, "tag_open", "tag_close");
xml_set_character_data_handler($this->parser, "cdata");
// Initialisation
$this->node_stack = array();
$this->tag_open(null, "root", array());
xml_parse($this->parser, $xmlstring);
xml_parser_free($this->parser);
$rnode = array_pop($this->node_stack);
return($rnode);
}
function tag_open($parser, $tag, $attributes){
// creation d'un nouveau node...
$node = array();
$node["_NAME"] = $tag;
foreach ($attributes as $key => $value) {
$node$key = $value;
}
$node["_DATA"] = "";
$node["_ELEMENTS"] = array();
// ajouter le nouveau node à la fin de la pile de node
array_push($this->node_stack, $node);
}
function cdata($parser, $cdata){
// ajouter les données au dernier node de la pile
$lastnode = count($this->node_stack);
$this->node_stack[$lastnode-1]["_DATA"] .= $cdata;
}
function tag_close($parser, $tag){
// suppression de la pile
$node = array_pop($this->node_stack);
$node["_DATA"] = trim($node["_DATA"]);
// and ajout comme élément à la fin de la pile...
$lastnode = count($this->node_stack);
array_push($this->node_stack[$lastnode-1]["_ELEMENTS"], $node);
}
} // end of class xml
// recupération de l' adresse du RSS avec le paramètre rssurl $rssurl = $HTTP_GET_VARS["rssurl"];
//////////////////////////////////////////////////
//Modifiez ici pour mettre l'adresse URL de votre RSS au cas ou aucun argument n'est passé: // exemple : // http://www.votresite.com/PHPRSSReader.php?rssurl=http://www.votresite.com/votrefichierRSS
////////////////////////////////////////////////
if (!$rssurl ) $rssurl = "http://www.itcom3.com/fr/rss.php";
// récupération du fichier par paquets de 4096
$fp = fopen($rssurl, "r");
while (!feof ($fp)) $data .= fgets($fp, 4096);
fclose ($fp);
$initPos = strpos($data, "<channel>"); // Saut de l'entête
//parse les données
$xml_parser = new xml(); $data = substr($data, $initPos); $root_node = $xml_parser->parse($data); $channel = array_shift($root_node["_ELEMENTS"]);
//Récupération de certaines données du RSS (Voir les specifications rss 0.91, 0.92 et 2.0)
/// Récupération entête de channel //////////////
foreach ($channel["_ELEMENTS"] as $item){
// suppression des antislashs
if($item[_NAME]=="title") $base_name=stripslashes($item[_DATA]); if($item[_NAME]=="link") $base_url=stripslashes($item[_DATA]); if($item[_NAME]=="description") $base_desc=stripslashes($item[_DATA]);
}
$base = "<b>Web: </b><a href=\"$base_url\" target=\"_new\">$base_name</a><br>$base_desc<br>";
////////////////////////////////////////////////
/////// Récupération de chaque Item --> titre, adresse url, date de publication, description
/////////////////////////////////////////////
foreach ($channel["_ELEMENTS"] as $item){
if($item[_NAME]=="item") {
// suppression des antislashs
foreach ($item["_ELEMENTS"] as $tag){
if($tag["_NAME"]=="title") $news_title=stripslashes($tag[_DATA]);
if($tag["_NAME"]=="link") $news_url=stripslashes($tag[_DATA]);
if($tag["_NAME"]=="pubDate") $news_pubDate=stripslashes($tag[_DATA]);
if($tag["_NAME"]=="description") $news_desc=stripslashes($tag[_DATA]);
}
$news .= "<p>$news_pubDate<br><b>$news_title</b><br>$news_desc<br><a href=\"$news_url\" target=\"_new\">$news_url</a><hr></p>";
} }
/////////////////////////////////////////////////
?> <html> <head> <title>Sample RSS Reader in PHP</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head> <body>
<?php print($news) ?> <?php print($base) ?>
</body> </html>
|
A+
Pierre |
|
| |
|
 |
mego WRInaute impliqué

Inscrit le: 07 Mar 2006 Messages: 326 Localisation: fr / es
|
Posté le : Ven Sep 08, 2006 10:05 Sujet du message: Newsletter à partir de flux RSS |
|
|
Merci je vais regarder ça  |
|
| |
|
 |
| |
|
|
|
|
Autres sujets de discussion :
Définitions :
|
|