Newsletter à partir de flux RSS

Consultez la formation à Google Analytics de WebRankInfo / Ranking Metrics


mego
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 331
Inscription: 7 Mar 2006

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 discret
WRInaute discret
 
Messages: 122
Inscription: 18 Mai 2004

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 occasionnel
WRInaute occasionnel
 
Messages: 331
Inscription: 7 Mar 2006

Message le Ven Sep 08, 2006 9:05

Merci je vais regarder ça :)


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

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 les experts Google Analytics de Ranking Metrics.

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

Lectures recommandées sur ce thème :

Consultez la description détaillée des produits ou services de Google suivants : FeedBurner, Google Feed Fetcher, Google Reader, Google ReadAir

  • Combinaison de mots-clés
    Cet outil vous permet de créer à partir de quelques mots-clés une liste d'expressions constituées des mots pris dans tous les ordres possibles. Il sert aux analyses de positionnement et achats de mots-clés.


Qui est en ligne

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