2009-12-14 4 views
1

Je saisis du texte dans <textarea></textarea>, des sauts de ligne, des espaces, etc. à dessein. Cependant, une fois que le texte est soumis et rendu dans <pre></pre>, les nouvelles lignes, les espaces, ont été remplacés par quelque chose comme \r\n\r\n. Qu'est-ce qui ne va pas? Comment puis-je conserver le format original?Le format de texte dans <pre></pre> est parti, qu'est-ce qui ne va pas?

 <textarea name="detail" id="detail" rows="7" cols="60" style="font-family:Arial, Helvetica, sans-serif"><?php echo $detail ?></textarea> 

Je rend le texte en HTML.

Voici la sortie:

L’agglomération urbaine de la métropole Hangzhou (区) a une population résidante de 3,919 millions d’habitants, dont 2,6367 xxx. \\\\ r \\\ n nHangzhou est situé dans la province du au nord du zhejiang, dans l'est de la chine, à l'extrémité sud du grand canal de , dans la plaine du milieu du ... \\\\ r En fin d’été (d’août à septembre), Hangzhou, le et d’autres villes de la province du Zhejiang , subissent des tempêtes de typhon, mais les typhons de le frappent rarement directement. En général. Modifié \ r \ n \ r \ nUne autre ligne.

Le type de données est varchar (MySQL). Le problème est-il présent?

+0

Où le soumettez-vous? – Gumbo

+0

quel est votre outil de rendu? –

+0

Pour la base de données, bien sûr. – Steven

Répondre

0

Vous devez exécuter votre sortie par la fonction nl2br première:

<pre><?php echo nl2br($content) ?></pre> 

Assurez-vous échapper les données pour protéger contre l'entrée méchant à un moment donné trop - que ce soit avant de le coller dans la base de données en utilisant mysql_real_escape_string ou lors de l'impression à l'écran à l'aide htmlspecialchars

+0

Les données n'ont pas de nouvelles lignes, il y a quelque chose qui se résout à la séquence littérale '\ r \ n', il y a probablement un double échappement qui se passe sur la ligne. – Quentin

+0

La séquence littérale \ r \ n _is_ une séquence de nouvelle ligne - exemple # 2 sur http://ca2.php.net/nl2br décrit * exactement * cette situation, où les littéraux \ n \ n sont remplacés par des balises
. – Dexter

+0

oui, double échappement. – Steven

0

Saisissez-vous ces derniers dans une application web ? Un que vous avez écrit? Ce qui se passe probablement, c'est qu'ils sont reconnus comme de nouvelles lignes. Sur les plateformes Windows, un paragraphe/nouvelle ligne est fait avec un \ r (retour chariot) et \ n (nouvelle ligne). Si vous les réaffichez sur une nouvelle page ou un nouveau site, vous devrez sous-traiter certains fichiers html, ou bien dans la soumission d'origine, remplacer \ r \ n par <pre>(whitespaceofyourchoice)<\pre>.

\ r et \ n sont des caractères ASCII qui ne font pas partie du formatage HTML. En tant que tel, les navigateurs Web choisiront de les ignorer.

Questions connexes