[RESOLU] De retour de chariot qui ne sont ni br ni ln

Mammouth du PHP | 881 Messages

11 janv. 2016, 18:09

Bonjour à vous,

j'ai un souci avec la récupération de certaines données.
J'utilise ckeditor sur une textarea. Le tout est enregistré dans un champ text de base de données, au format UTF-8
Voici le résultat obtenu :

Code : Tout sélectionner

<p>Bonjour &agrave; vous,&nbsp;</p> <p>voici un message portant sur trois lignes: une saltuation, ceci et un envoi.</p> <p>Merci de votre attention. &nbsp;Bonne journée.</p>
J'ignore pourquoi, lors de la récupération de mes données, il y a des formes de retour de chariot et d'espace blanc qui bloquent mon affichage. Quel est ce caractère ?

Ce que j'aimerais obtenir c'est:

Code : Tout sélectionner

<p>Bonjour &agrave; vous,&nbsp;</p> <p>voici un message portant sur trois lignes: une saltuation, ceci et un envoi.</p> <p>Merci de votre attention. &nbsp;Bonne journée.</p>
Voyez, j'ai dû faire un

Code : Tout sélectionner

$MaReponse = str_replace("à", "&agrave;", $MaReponse);
pour contourner le problème de l'accent grave sur « a », car le code UTF-8 de ce caractère est

Code : Tout sélectionner

à
, lequel code comporte encore ce fameux espace que je n'arrive pas identifier.

J'ai essayé la fonction nl2br sans succès.

Merci.
Soyez artisans de paix

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

11 janv. 2016, 21:08

Bonjour,

Regarde du côté de utf8_encode() ou utf8_decode()
Quand tout le reste a échoué, lisez le mode d'emploi...

Mammouth du PHP | 881 Messages

11 janv. 2016, 21:50

J'ai déjà essayé ça. Je viens d'essayer à nouveau avec les deux encode et decode, comme ceci:

Code : Tout sélectionner

$Ceci .= '<p>'.utf8_decode($QuelREP["contenu"]).'&nbsp;&nbsp;&nbsp;<font size="-2">( '.DateEnTexte($QuelREP["Ajour"], "CompleteHeure").' )</font></p>';
Sans plus de résultat.

Autre version ne donnant pas de meilleurs résultats:

Code : Tout sélectionner

$Ceci .= utf8_encode($QuelREP["contenu"]).'&nbsp;&nbsp;&nbsp;<span style="font-size=:-2">( '.DateEnTexte($QuelREP["Ajour"], "CompleteHeure").' )</span>';
Soyez artisans de paix

Eléphant du PHP | 51 Messages

25 janv. 2016, 19:57

Je ne suis pas familier de ckeditor mais je chercherai plutôt à ajouter un javascript sur la page où il y a le text area pour compacter les données avant leur enregistrement, et empêcher les retours chariot.

Mammouth du PHP | 881 Messages

25 janv. 2016, 23:16

Bonne idée J-Nicolas, j'essayerai ça.
Soyez artisans de paix

Mammouth du PHP | 881 Messages

26 janv. 2016, 02:28

Je crois avoir trouvé une réponse ici: http://stackoverflow.com/questions/2547 ... n-ckeditor
en agissant sur la configuration de ckeditor.

La solution est de modifier le fichier ckeditor/config.js y ajoutant ceci:

Code : Tout sélectionner

CKEDITOR.on('instanceReady', function( ev ) { var blockTags = ['div','h1','h2','h3','h4','h5','h6','p','pre','li','blockquote','ul','ol', 'table','thead','tbody','tfoot','td','th',]; for (var i = 0; i < blockTags.length; i++) { ev.editor.dataProcessor.writer.setRules( blockTags[i], { indent : false, breakBeforeOpen : true, breakAfterOpen : false, breakBeforeClose : false, breakAfterClose : true }); } });
Pour ma part, j'ai tout mis à false
Soyez artisans de paix