Probleme de retour à la ligne dans textarea
loicabel
-
Dalida Messages postés 7114 Date d'inscription Statut Contributeur Dernière intervention -
Dalida Messages postés 7114 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour
je suis en train de créer un systeme de post qui permetra de poster des cours. L'utilisatur saisi son texte dans un textarea, puis dans la page php correspondante j'enregistre ce texte sur un fichier .txt sur le serveur.
Mon poblème est que les retours à la ligne ne sont pas conservés. J'ai essayé d'utiliser nl2br, et replace, mais ni l'un ni l'autre ne se sont montrés efficaces.
De plus sous I.E et Firefox mes textarea sont interprété comme des zone text simples alors que sous opéra non.
quelqu'un pourrait il m'aider?
voici le script concerné :
<html>
...
<input type="textarea" name="texte" rows="50" cols="200">
je suis en train de créer un systeme de post qui permetra de poster des cours. L'utilisatur saisi son texte dans un textarea, puis dans la page php correspondante j'enregistre ce texte sur un fichier .txt sur le serveur.
Mon poblème est que les retours à la ligne ne sont pas conservés. J'ai essayé d'utiliser nl2br, et replace, mais ni l'un ni l'autre ne se sont montrés efficaces.
De plus sous I.E et Firefox mes textarea sont interprété comme des zone text simples alors que sous opéra non.
quelqu'un pourrait il m'aider?
voici le script concerné :
<html>
...
<input type="textarea" name="texte" rows="50" cols="200">
A voir également:
- Probleme de retour à la ligne dans textarea
- Retour à la ligne excel mac - Guide
- Partage de photos en ligne - Guide
- Retour à la ligne google sheet ✓ - Forum Google Docs
- Notepad++ retour à la ligne ✓ - Forum Bureautique
- Formulaire en ligne de meta - Guide
19 réponses
effectivement cela fonctionne avec echo (nl2br(htmlentities($_POST['textarea'])));
mais je souhaiterai l'écrire en une seule ligne dans le fichier.
à tu une idée de comment faire ?
excuse moi si mes questions sont des questions de bases mais je suis débutants.
mais je souhaiterai l'écrire en une seule ligne dans le fichier.
à tu une idée de comment faire ?
excuse moi si mes questions sont des questions de bases mais je suis débutants.
et si tu le stockes dans le fichier tel quel et tu appliques 'nl2br()' à ce que tu as enregistré, ça fonctionne ?
peux-tu refaire un point sur la méthode exacte que tu utilises ?
parce que avec 'nl2br()' ça devrait fonctionner tout seul.
y a un truc qui m'échappe !
parce que avec 'nl2br()' ça devrait fonctionner tout seul.
y a un truc qui m'échappe !
salut,
en premier, essaie avec la bonne balise : <textarea>.
ça devrait déjà aranger la situation , après on verra ce qui reste !
en premier, essaie avec la bonne balise : <textarea>.
ça devrait déjà aranger la situation , après on verra ce qui reste !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Effectivement cela règle le problème entre les différends navigateurs.
Mais j'ai toujours mo problème de retour à la ligne.
Mais j'ai toujours mo problème de retour à la ligne.
alors, on se récapitule !!!
l'utilisateur effectue une saisie dans la zone.
et tu souhaite récupérer les retours à la ligne (CR/LF) pour que le texte soit formaté comme la saisie ?
si c'est ça, est-ce que tu t'es posé la question d'utiliser carrément un éditeur de texte ?
est-ce qu'un retour au format html te conviendrait ?
si oui regarde ce que fait FCKEditor.
(il y en a surement d'autres, moi j'ai essayer celui là je le trouve très bien !)
je te conseille ça parce que je crois que ton problème est une vraie prise de tête. je crois avoir lu quelque chose à ce sujet mais je ne sais plus. faute de neurones, je vais essayer de trouver des infos !
<edit>
et non !!!
c'est pas du tout ce que je pensais…
donc regarde l'éditeur, on sait jamais ça pourrait te plaire…
pour ton problème est-ce que tu as un exemple d'entrée et de sortie des données ?
si tu fais un :
qu'est-ce que ça donne ?
</edit>
l'utilisateur effectue une saisie dans la zone.
et tu souhaite récupérer les retours à la ligne (CR/LF) pour que le texte soit formaté comme la saisie ?
si c'est ça, est-ce que tu t'es posé la question d'utiliser carrément un éditeur de texte ?
est-ce qu'un retour au format html te conviendrait ?
si oui regarde ce que fait FCKEditor.
(il y en a surement d'autres, moi j'ai essayer celui là je le trouve très bien !)
je te conseille ça parce que je crois que ton problème est une vraie prise de tête. je crois avoir lu quelque chose à ce sujet mais je ne sais plus. faute de neurones, je vais essayer de trouver des infos !
<edit>
et non !!!
c'est pas du tout ce que je pensais…
donc regarde l'éditeur, on sait jamais ça pourrait te plaire…
pour ton problème est-ce que tu as un exemple d'entrée et de sortie des données ?
si tu fais un :
echo (nl2br(htmlentities($_POST['textarea'])));
qu'est-ce que ça donne ?
</edit>
merci beaucoup. je vais essayer et je te tiens au courant de mon succès ou non.
je te confirme que autrement c'est une prise de tête car cela fait 2 jours que je coince là dessus...
je te confirme que autrement c'est une prise de tête car cela fait 2 jours que je coince là dessus...
peux tu nous monter le code source produit par 'echo()' ?
si ça s'affiche correctement il doit y avoir les balises html ad hoc.
tu le veux en texte brut ou en html ?
si ça s'affiche correctement il doit y avoir les balises html ad hoc.
tu le veux en texte brut ou en html ?
il ne produit pas de code, mais il renvoit le texte telquel, avec les retours à la lignes.
j'ai réussi à faire ce que je voulais avec un replace, mais la methode ne me convient pas car il peut y avoir confusion avec la frappe de l'utilisateur.
Si tu as une idée je suis preneur.
j'ai réussi à faire ce que je voulais avec un replace, mais la methode ne me convient pas car il peut y avoir confusion avec la frappe de l'utilisateur.
Si tu as une idée je suis preneur.
oui ca fonctionne.
j'ai un dernier problème avecles caractère spéciaux du type apostrophe, qu'il retranscrit " \ ' ". je suppose qu'il faut que j'utilise un htmlentities(), mais je n'arrive pas à le placer correctement.
peux tu encore m'aider stp?
j'ai un dernier problème avecles caractère spéciaux du type apostrophe, qu'il retranscrit " \ ' ". je suppose qu'il faut que j'utilise un htmlentities(), mais je n'arrive pas à le placer correctement.
peux tu encore m'aider stp?
'htmlentities()' peut prendre le paramètre 'ENT_NOQUOTES' pour ignorer apostrophes et guillemets.
plus d'infos
plus d'infos
en fait ce n'est pas ce que je voulais.
Il me renvoit par exemple le texte suivant :
coucou§§§§§§§§c \' est moi (dans mon fichier texte). les syboles § corespondent à la chaine qui remplace le retour à la ligne.
je voudrais ne pas voir l'anti slasch mais que l'utilisateur puisse l'utiliser dans son texte. je ne peux donc pas utiliser le replace. comment faire?
Il me renvoit par exemple le texte suivant :
coucou§§§§§§§§c \' est moi (dans mon fichier texte). les syboles § corespondent à la chaine qui remplace le retour à la ligne.
je voudrais ne pas voir l'anti slasch mais que l'utilisateur puisse l'utiliser dans son texte. je ne peux donc pas utiliser le replace. comment faire?
je receptionne ma variable et je la transforme pour la mettre dans mon fichier :
$texte=str_replace(chr(10),'§§§§§',$texte);
$texte=str_replace(chr(13),'§§§§',$texte);
$texte=str_replace(chr(13),'§§§§',$texte);
puis dans une autre page (celle pour consulter) :
<?php
$monfichier=fopen('toto.txt','r+');
$ligne=fgets($monfichier);
fclose($monfichier);
$ligne=str_replace('§§§§§',chr(10),$ligne);
$ligne=str_replace('§§§§',chr(13),$ligne);
echo (nl2br(htmlentities($ligne)));
?>
$texte=str_replace(chr(10),'§§§§§',$texte);
$texte=str_replace(chr(13),'§§§§',$texte);
$texte=str_replace(chr(13),'§§§§',$texte);
puis dans une autre page (celle pour consulter) :
<?php
$monfichier=fopen('toto.txt','r+');
$ligne=fgets($monfichier);
fclose($monfichier);
$ligne=str_replace('§§§§§',chr(10),$ligne);
$ligne=str_replace('§§§§',chr(13),$ligne);
echo (nl2br(htmlentities($ligne)));
?>
y a moyen de faire beaucoup mieux, c'est sûr !
reste plus qu'à trouver...
au lieu d'ouvrir le fichier tu peux soit placer le contenu dans une balise <object>, soit l'interpréter comme du php.
<object>
php
ce sont des pistes, à mon avis la première n'est pas pratique, la deuxième est à creuser car tu récupères le contenu du fichier texte en l'interprétant comme du php.
en <14> tu dis ne pas vouloir de balise mais comment affiches tu le texte ?
reste plus qu'à trouver...
au lieu d'ouvrir le fichier tu peux soit placer le contenu dans une balise <object>, soit l'interpréter comme du php.
<object>
<object data="file.txt" type="text/plain" width="772px" height="400"> alt : <a href="file.txt">Fichier texte</a> </object>
php
<?php
ob_start();
include('file.txt');
$text = ob_get_contents();
ob_end_clean();
?>
ce sont des pistes, à mon avis la première n'est pas pratique, la deuxième est à creuser car tu récupères le contenu du fichier texte en l'interprétant comme du php.
en <14> tu dis ne pas vouloir de balise mais comment affiches tu le texte ?
en <14> j'utilise echo, et c'a m'affiche des <br> a la place des retours à la ligne. en fait il me faudrait une fonction qui fasse l'inverse de nb2lr pour l'affichage, ca serai nickel, enfin je crois...
sinon je vais creuser les pistes surtout celle en php pk je ne connait pas (encore!!!) les objects.
sinon je vais creuser les pistes surtout celle en php pk je ne connait pas (encore!!!) les objects.
salut,
je suis sûr que l'on passe à côté d'une évidence par manque de connaissance du sujet.
mais bon, on peut toujours tenter de bricoler…
pour la fonction inverse de 'nl2br()' j'ai trouvé çà dans le manuel php :
je suis sûr que l'on passe à côté d'une évidence par manque de connaissance du sujet.
mais bon, on peut toujours tenter de bricoler…
pour la fonction inverse de 'nl2br()' j'ai trouvé çà dans le manuel php :
admin at ninthcircuit dot info
06-Jun-2005 11:00
As stated in the manual above, PHP's nl2br() feature only puts a "<br />" tag before each newline ("\n"). So -- if you intend to code a br2nl() function for yourselves, all you have to do is remove every occurence of "<br />" or "<br>".
Rather than get into nasty regular expressions to accomplish this, just use what PHP has built in already -- str_replace():
<?php
/* br2nl for use with HTML forms, etc. */
function br2nl($text)
{
/* Remove XHTML linebreak tags. */
$text = str_replace("<br />","",$text);
/* Remove HTML 4.01 linebreak tags. */
$text = str_replace("<br>","",$text);
/* Return the result. */
return $text;
}
?>
The final result from this function being called is whatever was entered before XHTML/HTML linebreaks were added.
All newlines are preserved by default, as per PHP ln2br() specification. Since the code above preserves newlines also, you can expect your data to reappear in the same way it was entered.