Encodage des retours chariots en XSL XML depuis MYSQL

Eléphant du PHP | 135 Messages

31 déc. 2009, 14:22

Hello

je suis en train de me faire un petit cms et je souhaite qu'il soit multilang.
J'ai donc mes tables que j'ai mis en utf8_general_ci.

je précise que j'utilise PDO.
Ensuite je récupère mes données avec la class DOMDocument pour le traité par la suite avec las classe XSLTprocessor.
Pour le moment je n'ai pas fais de formulaire pour insérer mes articles et je l'ai est rentré à la main avec phpmyadmin donc aucun traitement sur les chaines de caractères.
Quand j'écris avec en thai par exemple cela fonctionne bien sa s'affiche bien à l'écran ! pour cela j'ai fais ceci :

Code : Tout sélectionner

$this->PDOInstance->query('SET NAMES utf8');
En revanche mes retours chariot eux ne fonctionnent pas !
Dans phpmyadmin quand j'écris je fais juste des entrées pour les retours. Je n'écris pas de <br /> dans mon texte et les retours chariots dans le code source s'affiche comme ça : &# 13;


Donc il prend bien mes retours chariot dans le code source mais pas à l'affichage et quand je fais un nl2br il affiche dans la page <br /> et c'est un peu gênant lool

Merçi.
Zend PHP 5.3 certified ^^

ViPHP
ViPHP | 3607 Messages

31 déc. 2009, 15:39

Bonjour,
Déjà, je n'ai pas tout compris, parceque visiblement les caractères

Code : Tout sélectionner

\r \n
ne sont pas affichés ;)
Donc si tu pouvais nous la refaire avec les balises code?

Ensuite, que donne un
<?php
echo '<pre>',$donnees_tout_juste_sorties_de_la_bdd,'</pre>';
Et pour finir comment affiche tu les données? Utilises tu addslashes(), htmlspecialchars(),htmlentities(), etc... ?

Eléphant du PHP | 135 Messages

31 déc. 2009, 15:45

Bon alors je te remercie pour ton aide tout d'abord !

Entre temps j'ai fouiné et testé et j'ai trouvé !

J'appelais pas les fonction ou il fallait et voici mon code :

Code : Tout sélectionner

/** transform header in xml **/ $dom = new DOMDocument("1.0", "UTF-8"); $page = $dom->createElement('page'); $root = $dom->appendChild($page); $head = $dom->createElement('header'); $page->appendChild($head); $titlePage = $dom->createElement('title', $content->getTitle()); $meta = $dom->createElement('meta'); $head->appendChild($titlePage); $head->appendChild($meta); $description = $dom->createElement('description', $content->getMetaDescription()); $keywords = $dom->createElement('keywords', $content->getMetaKeywords()); $meta->appendChild($description); $meta->appendChild($keywords); $body = $dom->createElement('body'); $page->appendChild($body); foreach ($pages as $p) { $a = $p->getContent(); $articles = $dom->createElement('article'); $title = $dom->createElement('title', $a->getArticle()->getTitle()); $text = $a->getArticle()->getContent(); $txt = $dom->createElement('text', htmlspecialchars(nl2br(($text)))); // C'EST ICI QUE JE GERE MES RETOURS CHARIOT ET ON AJOUTE UN htmlspecialchars $articles->appendChild($title); $articles->appendChild($txt); $body->appendChild($articles); } $dom->formatOutput = true; $doc = $dom->saveXML(); $theme = new Theme(); $view = new View(); $xsl = $theme->getTheme() . 'articles.xsl'; echo html_entity_decode($view->transform($doc, $xsl)); // C'EST ICI QUE JE NETTOIE LE CODE AVEC CETTE FONCTION
et la j'ai une page niquel ! indenté propre comme j'aime :mrgreen:

Encore merci pour ton aide !
Zend PHP 5.3 certified ^^