Index du Forum » » Questions

Auteur

fonction headlines
fliaigre
913      

  Posté : 15-03-2012 13:15

Avec ta nouvelle version ça ne fonctionne pas. Rien n'est décodé donc j'ai remis celle-ci :

<?php  
// --------------------------------------------------------
// d'après parse_flux-2 pour lire des fichiers  RSS/RDF/Atom
// Dominique WOJYLAC < http://wojylac.free.fr>
// Distribué sous GNU General Public License.
// 
// Version 2.1c
// ---------------------------------------------------------
// fonction destinée Ã  nettoyer le texte  récupéré
// que l'on pourrait séparer de ce code&n bsp;en la mettant dans un fichier Ã  in clure
// fonction destinée Ã  nettoyer le texte  récupéré
// que l'on pourrait séparer de ce code&n bsp;en la mettant dans un fichier Ã  in clure
function clean_text($text$encodage '',$long) {
  if ($encodage == 'utf-8') {
    $text = utf8_decode($text);
  }
  $avant = array(
    '&lt;',
    '&gt;',
    '&quot;',
    '&amp;',
    '|@|' // pour traitement correct& nbsp;des caractères spéciaux préalablement remplacés&nb sp;(voir plus bas)
    );
  $apres = array(
    '<',
    '>',
    '"',
    '&',
    '&#'
    );
  $text = substr(str_replace($avant, $apres, $t ext),0,$long).' ...';
  return $text;
}

function lit_RSS($flux,$delai,$nbnews,$affichage,$long,$block_title)&nbs p;{
// chemin relatif vers le dossier cache
// le répertoire "cache" doit Ãªtre autorisé& nbsp;en Ã©criture
// ne pas oublier / Ã  la fin
$dir_cache = './cache/';

// nom du fichier mis en cache
//$file_cache = 'flux.html';
$url_explode = explode('/',$flux); 
$file_cache = ($url_explode[2]).'.html';

if (!is_dir($dir_cache)) {
  exit ('Répertoire cache "'.$dir_cache.'" inex istant !');
}

!include!_once('rss_read.inc.php'); 
$rss = new rss_read();
//$flux = ' http://npds.org/backend.php'; //adresse du flux passée par la fonction.
// voir la doc pour cette fonction
$date_modif = $rss -> get_last_modified($flux);

if ($date_modif > 0) {
  // le serveur distant a retourné u ne date de dermière modification
  // on remettra Ã  jour immédiateme nt en cas de modification postérieure
  // Ã  la date du fichier en&nb sp;cache
  $delai = 0;
}
else {
  // on impose la mise Ã  jour&n bsp;avec une certaine periodicité
  $date_modif = time();
  // le delai entre deux rafraichissements  en secondes Ã  régler suivant le type  de fil ici 2 heures
  //$delai = 600; //délai passé par  ;la fonction
}

// le fichier est-il en cache et suffisamm ent jeune
$file_cache = $dir_cache.$file_cache;
$en_cache = file_exists($file_cache);
if ($en_cache) {
  $en_cache = ($date_modif < filemtime($file _cache) + $delai);
}

if (!$en_cache) {
  // il est considéré comme n'étant&nbs p;pas en cache on le génére
  $content = '';
  
  // caractères parasites pouvant Ãªtre c ontenus dans le fils rss et Ã  remplace r par d'autres
  // doit Ãªtre invoqué avant parsefile < br />  // cette fonction est optionnelle et&nbs p;ne doit Ãªtre utilisée que pour certains  fils.
  $avant = array('&#','&bull;');
  $apres = array('|@|','-');
  $rss -> to_replace_with($avant, $apres);

  // parser le fichier news
  $res = $rss -> parsefile($flux);
  
  if ($res) {
    $encode = $rss -> get_encoding ();
    
    // recupération des données sur  le channel
    $channel = $rss -> get_channel ();
  
    // nombre d'items 
    if ($nbnews > $rss ->  get_num_items()) $nbnews =  $rss -> get_num_it ems(); // nombre de news Ã  afficher pa ssé par la fonction
    
    // recup array des données 
    $items = $rss -> get_items();
    if ($items) {
      $content .= '<ul>';
      for($i = 0; $i <&n bsp;$nbnews; $i++) { 
        if ($affichage ==&n bsp;'1') {
          $content .=& nbsp;'<li> '.$items[$i]['link'].'</li>'."\n"; // pou r le RSS "bizarre" de PedigreeDataBase
        } else {
          $content .=& nbsp;'<li> <a href="'.$items[$i]['link'].'" target="_bl ank" class="noir" alt="'.$items[$i]['title'].'" title="'.$items[$i]['title '].'">'.clean_text($items[$i]['title'], $encode, $long).'</a> ;</li>'."\n";
        }
      }
      $content .= '</ul>';
    }
    // affichage site, url, descripti on 
    $content .=  '<div><a hr ef="'. $channel['link'].'" target="_blank" class="noir"> Lire la suite ...</a></div>';
  } // fin if $rss
  
  $fd = fopen($file_cache, "w");
  fputs($fd, $content);
  fclose($fd);
} else {
    //Ouverture du fichier en lecture  seule
    $handle = fopen($file_cache, 'r');
    //Si on a réussi Ã  ou vrir le fichier
    if ($handle)
    {
      $content = '';
      //Tant que l'on est p as Ã  la fin du fichier
      while (!feof($handle))
      {
        //On lit la li gne courante  
        $content .= fgets($ handle);
      }
      //On ferme le fichier
      fclose($handle);
    } else {
      $content = 'Erreur de  ;lecture du fichier en cache';
    }
} // fin if !$en_cache
themesidebox($block_title,$content);
} // fin de fonction
?>




Celle-ci décode le texte mais pas la bulle.

Je suis sur REvolution 10.02 encodée en charset=ISO-8859-1.

Je te joins par mail.



Cet article provient de NPDS

http://www.npds.org/viewtopic.php?topic=25321&forum=9