Bonjour à tous,
J'ai un souci en voulant créer un flux RSS des news d'un site.
Les caractères spéciaux suivants : é à ç " ' ( - è _ ) = $ ê ë ù % * µ ! § : / ; . , ? > < ~ ã # { [ | À È \ ^a @ ] } & me posent beaucoup de problèmes. Je ne sais pas quelle encodage utiliser. Dans ma base l'encodage utilisé est l'ISO-8859, je compte le passer en UTF-8 mais pour l'instant je dois rester avec celui-ci. J'ai essayé plusieurs fonctions php comme utf8_encode et autre htmlentities mais je me retrouve toujours avec des erreurs. Comment dois je faire pour éviter des erreurs avec ces caractères ?
Comment génères tu ton flux ?
Avec une série d'echo ou avec DOMDocument ?

La classe DOMDocument peut s'avérer très pratique dans certains cas, car après avoir déclarer un nouvelle instance dont on a spécifié l'encodage elle va automatiquement encoder les caractère au bon format lors d'ajout de TextNode.

$my_rss = new DOMDocument('1.0' , 'utf-8');

// ... construction du XML ... 

//exemple d'ajout d'un noeud
$item = $my_rss->createElement('item' , 'des caractères spéciaux : < / \ > & %é à ...');
$my_rss->appendChild($item);

// ... construction du XML ... 

//impression 
echo $my_rss->saveXML();

Cela implique un peu de lecture de la doc ... mais selon moi ça en vaut la peine.
Je me permet au passage de vous rappelez que une partie de la FAQ traite des problèmes les plus courants en ce qui concerne l'encodage. Peut être la solution s'y trouve.
Modifié par Citron.mecanik (16 Oct 2008 - 14:11)
Merci pour ta réactivité
En fait je suis tout betement un tutorial qui proposait de l'echo
donc j'ai fait

<?php
require_once("feedparser.php");

echo
FeedParser("http://www.lamoooche.com/getRSS.php?idnews=792",3);
echo
FeedParser("http://www.pompage.net/rss",5);

echo
FeedParser("http://feeds.feedburner.com/Babylon-design-Tutoriaux-Webdesign-Adobe-Photoshop-Xhtml-css-Accessibilite?format=xml",4);
echo
FeedParser("http://feeds.feedburner.com/css4design",4);
?>


et le feedparser.php
donne

<?php
// inclusion de la classe magpierss
require_once("magpierss/rss_fetch.inc"); 

function FeedParser($url_feed, $nb_items_affiches=10)
{
// lecture du fichier distant (flux XML)
$rss = fetch_rss($url_feed); 

// si la lecture s'est bien passee,
// on lit les elements
if (is_array($rss->items))
{
// on ne recupere que les elements les + recents
$items = array_slice($rss->items,
0, $nb_items_affiches); 

// debut de la liste
// (vous pouvez indiquer un style CSS
// pour la formater)
$html = "<ul>\n"; 

// boucle sur tous les elements
foreach ($items as $item)
{
$html .= "<li>";
$html .= "<a href=\"".$item['link']."\">";
$html .= $item['title']."</a></li>\n";
}
$html .= "</ul>\n";
} 

// retourne le code HTML a inclure dans la page
return $html;
}
?> 

  


à quel endroit dois-je mettre l'utf-8
désolé Smiley confused je suis vraiment nul en PHP
Au vu du code de la fonction FeedParser tu ne cherches pas a créer ton propre flux RSS mais à lire le contenu du flux d'un autre site pour l'afficher dans ta page HTML.

Erehcab cherchais à créer son propre flux depuis sa base de donnée. Vous n'avez pas le même but.

Sinon il manque une partie du code : le fichier magpierss/rss_fetch.inc (que doit contenir la fonction fetch_rss).
L'erreur peut se trouver dans ce fichier.

a écrit :
désolé je suis vraiment nul en PHP

Moi c'est en Latin ... j'en suis pas désolé pour autant Smiley lol
Les forums sont fait pour ça Smiley cligne

Edit : Je viens de voir que tu as posté sur un autre poste qui correspond mieux au problème.
Modifié par Citron.mecanik (17 Oct 2008 - 00:47)