Bienvenue sur la nouvelle version de PHPfrance ! Nouveau design, nouvelles fonctionnalités : En savoir +

page xml : retour à la ligne

Petit nouveau ! | 37 Messages

21 Fév 2008, 03:19

Bonjour,

j'ai un probleme avec l'affichage de mon flux rss si mon texte contient des <br />. le xml ne semble pas l'interpréter.
Lors de l'ajout d'une news je fais un nl2br sur ma variable qui va contenir le texte

Code : Tout sélectionner

$contenu =nl2br($_POST['contenu']); //j'utilise un textarea


savez vous comment faire pour gérer les retours à la ligne sur une page xml ?
ah oui autre précision si on un htmlentities sur la variable contenu et que l'on tape un "é" ben la page refuse de s'afficher donc j'ai laissé tomber cette fonction.

Avatar de l’utilisateur
Administrateur PHPfrance
Administrateur PHPfrance | 13179 Messages

21 Fév 2008, 09:00

Quelle est l'aspect de ton flux XML ?
Est-ce que tu utilises des balises CDATA ?
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Petit nouveau ! | 37 Messages

21 Fév 2008, 18:26

voici on flux, non je n'ai pas de balise CDATA.
Je pense que peut etre que le problème ne vient pas du flux mais du textarea que j'utilise.

Admettons qu'une personne tape à l'infini un caractère sans taper sur la touche entrée, et bien dans le flux rss le texte va dépasser la bordure blanche qui est couramment utilisée.Par contre si cette personne tape sur entrée, le texte reste dans l'espace réservé au flux( partie blanche).

Est ce qu'il aurait un moyen pour ne pas que le texte dépasse la bordure blanche du flux rss ?
Une propriété à mettre sur le textarea peut etre ?


Code : Tout sélectionner

 $xml = '<?xml version="1.0" encoding="UTF-8"?>';
 $xml .= '<rss version="2.0">';
 $xml .= '<channel>';
 $xml .= '<title>Titre du flux</title>';
 $xml .= '<link>http://www.monsite.com</link>';
 $xml .= '<description>Description du flux</description>';
 $xml .= '<copyright> MonSite 2005</copyright>';
 $xml .= '<language>fr</language>';
 $xml .= '<image>';
 $xml .= ' <title>Titre du flux</title>';
 $xml .= ' <url>chemin absolu de l\'image http://.... (pas plus de 88px de haut)</url>';
 $xml .= ' <link>http://www.monsite.com</link>';
 $xml .= '</image>';
 $today= date("D, d M Y H:i:s +0100");
 $xml .= '<pubDate>'.$today.'</pubDate>';
 $xml .= '<item>';
 $xml .= '<title>'.$titre.'</title>';
 $xml .= '<link>'.$adresse.'</link>';
 $xml .= '<description>'.$contenu.'</description>';
 $xml .= '<pubDate>'.$datephp.'</pubDate>';
 $xml .= '</item>';
 $xml .= '</channel>';
 $xml .= '</rss>';


Administrateur PHPfrance
Administrateur PHPfrance | 3090 Messages

21 Fév 2008, 19:35

Je crois qu'il y a méprise, un RSS n'a pas de représentation graphique. RSS n'utilise pas HTML et <br /> n'a aucune signification en XML. Les sauts de lignes, en XML, sont représentés par... des sauts de lignes. À toi ensuite d'utiliser nl2br() si tu veux les convertir et les afficher en HTML.

Pareil pour cette bordure blanche, comment est-elle créée ? Une chose est sûre, RSS n'a aucun contrôle sur la façon dont il est affiché.

Mammouth du PHP | 2937 Messages

21 Fév 2008, 23:32

kluck a écrit :

Code : Tout sélectionner

 $xml = '<?xml version="1.0" encoding="UTF-8"?>';
 $xml .= '<rss version="2.0">';
 $xml .= '<channel>';
 $xml .= '<title>Titre du flux</title>';
 $xml .= '<link>http://www.monsite.com</link>';
 $xml .= '<description>Description du flux</description>';
 $xml .= '<copyright> MonSite 2005</copyright>';
 $xml .= '<language>fr</language>';
 $xml .= '<image>';
 $xml .= ' <title>Titre du flux</title>';
 $xml .= ' <url>chemin absolu de l\'image http://.... (pas plus de 88px de haut)</url>';
 $xml .= ' <link>http://www.monsite.com</link>';
 $xml .= '</image>';
 $today= date("D, d M Y H:i:s +0100");
 $xml .= '<pubDate>'.$today.'</pubDate>';
 $xml .= '<item>';
 $xml .= '<title>'.$titre.'</title>';
 $xml .= '<link>'.$adresse.'</link>';
 $xml .= '<description>'.$contenu.'</description>';
 $xml .= '<pubDate>'.$datephp.'</pubDate>';
 $xml .= '</item>';
 $xml .= '</channel>';
 $xml .= '</rss>';


Avec un code pareil, ce que tu peux faire, c'est ajouter à la fin de chaque chaîne une chaîne à doubles guillemets contenant le marqueur de retour à la ligne, comme suit :
[php]
$xml = '<?xml version="1.0" encoding="UTF-8"?>'."\n";
$xml .= '<rss version="2.0">'."\n";
// etc.[/php]

ptimushu
| Messages

17 Nov 2008, 12:39

kluck a écrit :voici on flux, non je n'ai pas de balise CDATA.
Je pense que peut etre que le problème ne vient pas du flux mais du textarea que j'utilise.

Admettons qu'une personne tape à l'infini un caractère sans taper sur la touche entrée, et bien dans le flux rss le texte va dépasser la bordure blanche qui est couramment utilisée.Par contre si cette personne tape sur entrée, le texte reste dans l'espace réservé au flux( partie blanche).

Est ce qu'il aurait un moyen pour ne pas que le texte dépasse la bordure blanche du flux rss ?
Une propriété à mettre sur le textarea peut etre ?


Code : Tout sélectionner

 $xml = '<?xml version="1.0" encoding="UTF-8"?>';
 $xml .= '<rss version="2.0">';
 $xml .= '<channel>';
 $xml .= '<title>Titre du flux</title>';
 $xml .= '<link>http://www.monsite.com</link>';
 $xml .= '<description>Description du flux</description>';
 $xml .= '<copyright> MonSite 2005</copyright>';
 $xml .= '<language>fr</language>';
 $xml .= '<image>';
 $xml .= ' <title>Titre du flux</title>';
 $xml .= ' <url>chemin absolu de l\'image http://.... (pas plus de 88px de haut)</url>';
 $xml .= ' <link>http://www.monsite.com</link>';
 $xml .= '</image>';
 $today= date("D, d M Y H:i:s +0100");
 $xml .= '<pubDate>'.$today.'</pubDate>';
 $xml .= '<item>';
 $xml .= '<title>'.$titre.'</title>';
 $xml .= '<link>'.$adresse.'</link>';
 $xml .= '<description>'.$contenu.'</description>';
 $xml .= '<pubDate>'.$datephp.'</pubDate>';
 $xml .= '</item>';
 $xml .= '</channel>';
 $xml .= '</rss>';



utilise <![CDATA[<br >]]> qui creer des <br /> sans générer d'erreur

Mammouth du PHP | 2937 Messages

17 Nov 2008, 13:43

Puisque le XML ressemble à du RSS 2.0, on peut, à la rigueur, se contenter des entités HTML : &lt;br /&gt; pour <br />.

ViPHP
ViPHP | 4669 Messages

18 Nov 2008, 02:57

Hey :),
kluck a écrit :

Code : Tout sélectionner

$xml .= '<rss version="2.0">'
Victor BRITO a écrit :Puisque le XML ressemble à du RSS 2.0 […]
Oh ! Il est fort Victor … très fort ;-).
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).