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

Signaler
Messages postés
24
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
17 janvier 2005
-
Messages postés
822
Date d'inscription
vendredi 25 mai 2001
Statut
Modérateur
Dernière intervention
1 août 2014
-
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

Messages postés
822
Date d'inscription
vendredi 25 mai 2001
Statut
Modérateur
Dernière intervention
1 août 2014

Bonsoir,
ces fameux retours chariots sont sous quel format ?

orion
http://blogs.developpeur.org/orion/
Messages postés
24
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
17 janvier 2005

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...
Messages postés
822
Date d'inscription
vendredi 25 mai 2001
Statut
Modérateur
Dernière intervention
1 août 2014

Ok fais moi voir ton code..

orion
http://blogs.developpeur.org/orion/
Messages postés
24
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
17 janvier 2005

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
Messages postés
822
Date d'inscription
vendredi 25 mai 2001
Statut
Modérateur
Dernière intervention
1 août 2014

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/
Messages postés
24
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
17 janvier 2005

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
Messages postés
822
Date d'inscription
vendredi 25 mai 2001
Statut
Modérateur
Dernière intervention
1 août 2014

J'aimerai tout de même bien voir ta page en action si jamais tes misères continues :)

orion
http://blogs.developpeur.org/orion/
Messages postés
24
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
17 janvier 2005

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
Messages postés
822
Date d'inscription
vendredi 25 mai 2001
Statut
Modérateur
Dernière intervention
1 août 2014

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/