Fonction nl2br impuissante face à des retours chariot transgéniques...

cs_moon Messages postés 24 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 17 janvier 2005 - 16 sept. 2004 à 19:06
cs_OriOn Messages postés 822 Date d'inscription vendredi 25 mai 2001 Statut Modérateur Dernière intervention 1 août 2014 - 21 sept. 2004 à 07:56
Bonjour...

J'ai un petit ennui sur un formulaire traité par PHP. Lorsque je copie du texte venu d'une page HTML dans une zone de texte multiligne de mon formulaire et que je valide, des retours chariot invisibles s'insèrent avec. Les données sont destinées à être affichées dans Flash et le formatage foire complètement dans le Flash en question, chaque retour à la ligne devient un double retour à la ligne.

J'ai essayé avec nl2br, str_replace, htmlentities etc.... mais rien ne permet de supprimer ces retours chariots pour en faire des bons vieux
... Les retours chariots qui passent dans un copier/coller ne sont pas du même format que celui qui est interprété par nl2br ??

Aidez moi je nage :)

m-O_o-n

9 réponses

cs_OriOn Messages postés 822 Date d'inscription vendredi 25 mai 2001 Statut Modérateur Dernière intervention 1 août 2014
16 sept. 2004 à 22:00
Bonsoir,
ces fameux retours chariots sont sous quel format ?

orion
http://blogs.developpeur.org/orion/
0
cs_moon Messages postés 24 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 17 janvier 2005
16 sept. 2004 à 23:50
Ben je n'en ai aucune idée, il n'apparaît pas. Même dans la source html on voit le saut de ligne en lui même, mais pas le code du retour...

c zarb...
0
cs_OriOn Messages postés 822 Date d'inscription vendredi 25 mai 2001 Statut Modérateur Dernière intervention 1 août 2014
17 sept. 2004 à 11:36
Ok fais moi voir ton code..

orion
http://blogs.developpeur.org/orion/
0
cs_moon Messages postés 24 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 17 janvier 2005
17 sept. 2004 à 15:32
Bon, j'ai essayé de mettre les parties intéressantes...
Ce n'est pas très parlant, je sais

//formulaire 1:
//L'objet qui vient d'un formulaire de saisie :
<textarea name= "duree" cols="40" rows="3" class="formulaire" id="duree"><? echo $line[duree_formation]; ?></textarea>

// formulaire 2:
// La valeur passe par d'autres formulaires (ajout en plusieurs étapes). J'en profite pour la nettoyer un peu:
function clean($valeur){
return str_replace("\n","",htmlentities(str_replace(""","'",stripslashes($valeur))));
}

// enregistrement :
// Dans l'enregistrement, je récupère la variable de post
$duree = cleanbr($_POST["duree"]);

// Je nettoie encore une fois pour essayer de virer les retours chariot:
function cleanbr($valeur){
return str_replace("\n","",htmlentities(str_replace(""","'",stripslashes(str_replace("
","",nl2br($valeur))))));
}

// script appelé par Flash
// Ce code est destiné à une animation Flash (c'est ici que les retours à la ligne sont dupliqués)

$html .= urlencode(utf8_encode(" Durée / organisation générale :
"));
$html . = urlencode(utf8_encode("" . $line[duree_formation] . "

"));

Les fonctions imbriquées, ce sont mes tests pour essayer de tuer les retours à la ligne (inutiles d'ailleurs)

Au passage il me semble avoir compris que nl2br place des </ br> la ou il y a des retours mais elle ne supprime pas les retours en question...

Merci de t'intéresser à mon problème, j'espère trouver la solution =)

@++

m-O_o-n
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_OriOn Messages postés 822 Date d'inscription vendredi 25 mai 2001 Statut Modérateur Dernière intervention 1 août 2014
17 sept. 2004 à 16:13
Tout à fait,
nl2br() permet de convertir les retours chariots en
.

Je voudrais également le rendu html de la page (si tu as moyen de me le mettre en ligne) pour voir quel est le problème.

@ +

orion
http://blogs.developpeur.org/orion/
0
cs_moon Messages postés 24 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 17 janvier 2005
20 sept. 2004 à 17:43
Ca y est, j'ai identifié l'origine du problème. Mais je ne suis toujours pas parvenu à le résoudre.

Si je remplis la zone de texte en copiant du texte sur une page html, l'erreur se produit si la source de la page en question est écrite d'une certaine façon. Voilà le fichier que j'ai testé:

Fonctionne mal :

<li>Ici, il y'a des balises br en plus, inutiles.

<li>Ici, il y'a des balises br en plus, inutiles.

<li>Ici, il y'a des balises br en plus, inutiles.

<li>Ici, il y'a des balises br en plus, inutiles.

Fonctionne bien :

<li>Ici, il n'y a pas de br en plus.
<li>Ici, il n'y a pas de br en plus.
<li>Ici, il n'y a pas de br en plus.
<li>Ici, il n'y a pas de br en plus.

Si je copie le résultat de ce code html dans ma zone et que je valide, des retours chariots supplémentaire se promènent dans le code. Ils ne s'affichent pas dans les navigateurs, MAIS par contre on les distingue très bien dans la source html :

Affichage de durée :

Fonctionne mal :

Ici, il y'a des balises br en plus, inutiles.

Ici, il y'a des balises br en plus, inutiles.

Ici, il y'a des balises br en plus, inutiles.

Ici, il y'a des balises br en plus, inutiles.

Fonctionne bien :

Ici, il n'y a pas de br en plus.
Ici, il n'y a pas de br en plus.
Ici, il n'y a pas de br en plus.
Ici, il n'y a pas de br en plus.

Et une fois arrivée dans Flash, l'affichage intègre ces retours superflus, ce qui perturbe l'affichage... Je ne pense pas pouvoir résoudre le peroblème, je vais juste demander au gens de vérifier le formatage après avoire effctué un copier/coller.

Je ne dois pas être le premier à avoir des ennuis de ce genre...

Merci beaucoup pour t'être intéressé à mon problème, n'hésites pas à me faire part de tes idées s'il t'en vient =)

@++

m-O_o-n
0
cs_OriOn Messages postés 822 Date d'inscription vendredi 25 mai 2001 Statut Modérateur Dernière intervention 1 août 2014
20 sept. 2004 à 22:31
J'aimerai tout de même bien voir ta page en action si jamais tes misères continues :)

orion
http://blogs.developpeur.org/orion/
0
cs_moon Messages postés 24 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 17 janvier 2005
20 sept. 2004 à 22:51
Je vais m'organiser pour isoler le ptoblème et le mettre en hébergement quelquepart.. là le projet me bouffe tout mon temps mais je ferai ça cette semaine si possible, merci de ton aide.

Je suis en train de me dire que la solution se trouve peut-être dans des fonctions php ou javascript ou cgi ou je ne sais quoi d'autre que je n'utilise jamais... :)

a+

m-O_o-n
0
cs_OriOn Messages postés 822 Date d'inscription vendredi 25 mai 2001 Statut Modérateur Dernière intervention 1 août 2014
21 sept. 2004 à 07:56
Je n'en suis pas sur, je ne sais pas si ce n'est pas une simple erreur de conception mais pour vérifier cette hypothèse il me faut voir la page en action.

@ bientôt

orion
http://blogs.developpeur.org/orion/
0
Rejoignez-nous