Fonction nl2br impuissante face à des retours chariot transgéniques...
cs_moon
Messages postés24Date d'inscriptionmardi 4 février 2003StatutMembreDernière intervention17 janvier 2005
-
16 sept. 2004 à 19:06
cs_OriOn
Messages postés822Date d'inscriptionvendredi 25 mai 2001StatutModérateurDerniè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
A voir également:
Fonction nl2br impuissante face à des retours chariot transgéniques...
cs_moon
Messages postés24Date d'inscriptionmardi 4 février 2003StatutMembreDernière intervention17 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)
cs_moon
Messages postés24Date d'inscriptionmardi 4 février 2003StatutMembreDernière intervention17 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 =)
cs_moon
Messages postés24Date d'inscriptionmardi 4 février 2003StatutMembreDernière intervention17 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... :)
cs_OriOn
Messages postés822Date d'inscriptionvendredi 25 mai 2001StatutModérateurDerniè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.