Newsletter à partir de flux RSS

Consultez la formation à Google Analytics de WebRankInfo / Ranking Metrics


mego
WRInaute impliqué
WRInaute impliqué
 
Messages: 328
Inscription: Mar Mar 07, 2006 10:14

Newsletter à partir de flux RSS

Message le Jeu Sep 07, 2006 16:21

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
WRInaute occasionnel
 
Messages: 121
Inscription: Mar Mai 18, 2004 10:19

Message le Jeu Sep 07, 2006 17:14

Voici un source que tu pourras modifier/adapter à ton besoin :

Code: Tout sélectionner
<!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é
WRInaute impliqué
 
Messages: 328
Inscription: Mar Mar 07, 2006 10:14

Message le Ven Sep 08, 2006 9:05

Merci je vais regarder ça :)


Formation recommandée sur ce thème :

Formation Google Analytics : en 2 jours, apprenez comment exploiter l'essentiel des possibilités de l'outil de mesure d'audience de Google. Formation animée par Julien Coquet, expert certifié officiellement par Google Analytics.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités