Bonjour,
sa fait 4 jour que je cherche et que j'essais plein de chose mais jai des caractères spéciaux récalcitrant... et se ne sont pas tous les caractères spéciaux.
Pour un client je lui ai fait un module de news les données sont contenue dans une table dont l'interclassement est : latin1_swedish_ci
il insère ses données via un formulaire qui a un outil wysiwyg en y collant sont texte qu'il a préalablement composé dans Openoffice se qui fait que pour chaque new dans la bd sa donne un code html ayant une entete utf-8
Quand les données sont affichés dans le site tous va bien.
Mon problème est dans le flux rss de ces news certains caractères bug complètement... je vous colle la page du site et la page de rss
http://www.etaupolicier.com/index-tmp.php
http://www.etaupolicier.com/news_FR_flux.xml
les textes qui bug sont les extrait du livre que le client a composé ... quand il a tapé sont livre pour certains caractères il a utilisé la table des caractères de windows.
Voici les caractère qui bug:
’ … –
J'ai essayé de faire un remplacement de caractère avec str_replace() mais ont dirait que la fonction ne voit pas ces caractères , il ne les remplacent pas.
Dans la création du rss j'encode en utf-8 avec utf8_encode() .... j'ai l'impression de ne pas avoir le choix car sinon j'ai plein de message d'erreur me disant que mes données ne sont pas en utf-8.
J'ai cru que peut-être le html de l'outil wysiwyg posait problème alors jai tout fait enlever les tag html avec strip_tags() ... résultat= aucun progrès.
Pouvez-vous m'aider svp , je suis a bout de piste de solution
jai demandé au client de changer ses caractères a problèmes mais il ne veut pas ... car trop long cest 3 livre de 500 pages chaques.
Au cas où sa vous aiderais à m'aider, voici le code de mon fichier qui génère mon rss en xml:
<?php
function &init_news_rss(&$xml_file)
{
$root = $xml_file->create_element("rss"); //création de l'element
$root->set_attribute("version", "2.0"); //on lui ajoute un attribut
//$root->set_attribute("encoding","utf8"); //on lui ajoute un attribut
$root = $xml_file->append_child($root); //on l'insère dans le noeud parent (ici root qui est "rss")
$channel = $xml_file->create_element("channel");
$channel = $root->append_child($channel);
$desc = $xml_file->create_element("description");
$desc = $channel->append_child($desc);
$text_desc = $xml_file->create_text_node("Les actualités de L'Étau Policier."); //on insère du texte entre les balies <description></description>
$text_desc = $desc->append_child($text_desc);
$link = $xml_file->create_element("link");
$link = $channel->append_child($link);
$text_link = $xml_file->create_text_node("http://www.etaupolicier.com");
$text_link = $link->append_child($text_link);
$title = $xml_file->create_element("title");
$title = $channel->append_child($title);
$text_title = $xml_file->create_text_node("etaupolicier.com");
$text_title = $title->append_child($text_title);
return $channel;
}
function add_news_node(&$parent, $root, $id, $mois, $annee, $titre, $contenu, $date)
{
$item = $parent->create_element("item");
$item = $root->append_child($item);
$title = $parent->create_element("title");
$title = $item->append_child($title);
$text_title = $parent->create_text_node($titre);
$text_title = $title->append_child($text_title);
$link = $parent->create_element("link");
$link = $item->append_child($link);
$text_link =
$parent->create_text_node("http://www.etaupolicier.com/actualites_archives.php?mois=".$mois."&annee=".$annee."#".$id."");
$text_link = $link->append_child($text_link);
$desc = $parent->create_element("description");
$desc = $item->append_child($desc);
$text_desc = $parent->create_text_node($contenu);
$text_desc = $desc->append_child($text_desc);
$com = $parent->create_element("comments");
$com = $item->append_child($com);
$text_com = $parent->create_text_node("http://www.etaupolicier.com/actualites_archives.php?mois=".$mois."&annee=".$annee."#".$id."");
$text_com = $com->append_child($text_com);
$pubdate = $parent->create_element("pubDate");
$pubdate = $item->append_child($pubdate);
$text_date = $parent->create_text_node($date);
$text_date = $pubdate->append_child($text_date);
$guid = $parent->create_element("guid");
$guid = $item->append_child($guid);
$text_guid = $parent->create_text_node("http://www.etaupolicier.com/actualites_archives.php?mois=".$mois."&annee=".$annee."#".$id."");
$text_guid = $guid->append_child($text_guid);
$src = $parent->create_element("source");
$src = $item->append_child($src);
$text_src = $parent->create_text_node("http://www.etaupolicier.com");
$text_src = $src->append_child($text_src);
}
function rebuild_rss()
{
include("config.php");
mysql_connect($host,$login,$password);
mysql_select_db($db);
//On récupère les news
$nws=mysql_query('SELECT id, nom, description, DAYOFWEEK(date_arch) day_week, DAYOFMONTH(date_arch) day, YEAR(date_arch) an, MONTH(date_arch) mois FROM `actualites` where MONTH(date_arch)='.date("m").' and YEAR(date_arch)='.date("Y").' ORDER BY id DESC, an DESC, mois DESC, day DESC') or die(mysql_error());
//On crée le fichier XML
$xml_file = domxml_new_doc("1.0");
//On initialise le fichier XML pour le flux RSS
$channel = init_news_rss($xml_file);
//On ajoute chaque news au fichier RSS
while($news = mysql_fetch_assoc($nws))
{
add_news_node($xml_file, $channel, $news["id"], $news["mois"], $news["an"], utf8_encode(stripslashes($news["nom"])), strip_tags(utf8_encode(stripslashes($news["description"]))), $news["date_arch"]);
}
//On écrit le fichier
$xml_file->dump_file("news_FR_flux.xml");
}
?>