Newsgroup: it.comp.www.php
Titolo: Textarea con un a capo in più....

Scusate ma ho un piccolo problema... magari riuscite ad aiutarmi...
Ho un form che scrive il contenuto di una textarea in un file di testo.
Se ad esempio nella textarea un utente scrive...
"mio testo mio testo qui vado a capo
mio testo mio testo"
il risultato nel file di testo risulta essere
"mio testo mio testo qui vado a capo
mio testo mio testo"
La mia domanda č... perchč mi va a capo due volte???
E come posso fare perchč non faccia questa cosa che mi crea alcuni piccoli
problemi... io vorrei che andasse a capo solo una volta.. cosě come c'č
scritto nella textarea.
Spero di essere stato chiaro.. e vi ringrazio anticipatamente per l'aiuto.

 ha scritto nel messaggio
news:tejF7.16921$sq5.8...@news.infostrada.it...

io ho provato cosě:
<form method=get action=<?=$PHP_SELF?>>
<textarea name=text></textarea>
<input type=submit name=submit value=invia>
</form>
<?
if ($submit=="invia" && IsSet($text)) {
        $f = fopen("acapo.txt","w");
        fwrite($f,$text);
        print "Ho scritto sul file!";
}
?>
E funziona bene, va a capo solo una volta!
Alex

 Alex
In pratica č lo stesso script che ho usato io.. anch'io avevo fatto nello
stesso modo.. l'unica differenza č che avevo fputs al posto di fwrite...
Il problema perň non si risolve.. ho provato anche con il tuo script da
solo... e quando scrive il file... mette un a capo in piů...
In pratica se nella textarea uno scrive...
"Il mio
Nome"
Aprendo il file ottengo...
"Il mio
Nome"
Sto provando in locale.. apache  su win2000 .. non ho provato su linux.. non
so se dipenda da quello.. ma in ogni caso qualcuno ha qualche idea in
proposito?

 ha scritto nel messaggio
news:wFwF7.19739$sq5.9...@news.infostrada.it...


 FOrse perň ho capito male, ho questo piccolo presentimento.
No č proprio questo il problema, in questo caso sostituisci \n con <br> ma č
utile solo quando devi scrivere sulla pagina web...
il pratica nel suo caso invece di avere
"miotesto vado a capo
sono a capo"
avresti
"miootesto vado a capo<br><br>sono a capo"
Pero' non dovrebbe essere cosě...
Alex

 ha scritto nel messaggio
news:wFwF7.19739$sq5.9...@news.infostrada.it...

Uhm strano...
Io l'ho porvato su Win2000 con IIS... ma non dovrebbe cambiare nulla...
A questo punto prova con questo script e vedi cosa esce:
<form method=get action=<?=$PHP_SELF?>>
<textarea name=text></textarea>
<input type=submit name=submit value=invia>
</form>
<?
if ($submit=="invia" && IsSet($text)) {
        $text = eregi_replace("\n"," ",$text);
        $f = fopen("acapo.txt","w");
        fwrite($f,$text);
        print "Ho scritto sul file!";
}
?>
Ciao
Alex

>$textarea = str_replace("\n","<br>",$textarea);
sì.. certo.. con questo sistema riesco in qualche modo a risolvere... anche
se più che altro volevo capire perchè accada questa cosa.
Nel presentare il problema io ho semplificato molto per rendere l'idea di
quello che accade... visto che in realtà devo creare numerose textarea in
una sola pagina... che di fatto settano variabili di testo che vengono
scritte su file.. e il file viene poi letto da una pagina html... volevo
evitare di sostituire gli \n con i <br> da una parte... e fare l'operazione
contraria dall'altra... perchè quelle variabili devono essere rilette dalla
textarea ogni volta che riapro la pagina... e quindi devo togliere i <br>.
Più che altro volevo capire se ero io a sbagliare qualcosa dal momento che
non riesco a capire perchè debba scrivermi su file una stringa che di fatto
ha un  \n come una stringa che ne abbia due.
Pensavo di non settare correttamente qualche parametro del fwrite...
mah :-|
Penso comunque che sia ancora questione di ignoranza mia :)

|No è proprio questo il problema, in questo caso sostituisci \n con <br>
E comunque, o ragazzi, esiste la funzione nl2br() ! ! ! !
Perché vi ostinate con queste regular expressions che appesantiscono il
parser e basta?

 Alex
Sì.. come ho già risposto a You and Milano nel mio post delle 15:32
sostituendo gli \n ottengo la stringa con i <br> e la cosa può anche andarmi
bene.
Solo che poi dovrei ritorglierli di nuovo perchè ho necessità di fare
rileggere la stringa alla textbox.
E visto che le texbox sono piuttosto numerose per quello che devo fare
volevo vedere se sera possibile evitare tutto questo.. togli-metti
Facendo come suggerisci tu... sostituendo gli \n con niente.. ovvero con ""
(ho tolto lo spazio che tu avevi lasciato... altrimenti mi mette uno spazio
vuoto) effettivamente otterrei la stringa così come la voglio... il problema
è che però l'a capo che effettivamente c'è sul file di testo.. non viene
interpretato poi da nl2br nella pagina html... e quindi di fatto perdo gli a
capo che l'utente imposta nella textbox.
Come detto con i <br> risolvo ... sostituendo e risostituendo.... ma vorrei
capire perchè mi mette 2 a capo quando ce n'è solo uno!

Come disse Archimede... eureka! :)
Il problema si risolve in questo modo... ovvero facendo aprire il file
cosě...
$file = fopen ("index_testo.php", wb);
al posto di cosě:
$file = fopen ("index_testo.php", w);
in pratica la b fa aprire in modo binario il file a windows.. mentre su
sistemi unix dovrebbe essere ignorata in quanto inutile.
Ho provato... in questo modo tutti i miei a capo vengono rispettati
perfettamente.
Ciao e grazie delle consulenze :)

 ha scritto nel messaggio
news:EhzF7.20812$sq5.1...@news.infostrada.it...

Veramente anche io uso windows ma non ho questo tipo di problema...
Effettivamente, non č un grosso problema, pero' se dovessi (in futuro, per
qualche motivo) cambiare sistema/configurazione potrebbe funzionare tutto
diversamente! :-/
Alex