Premetto che uso Windows XP e PHP 4.2.3 , e che sto lavorando ad uno script che usa file di testo.
Voglio che il contenuto di configurazione.txt possa essere modificato tramite form.
configurazione.txt ha questo aspetto:
<tipo>
contenuto
su più
righe
</tipo>
<tipo>
contenuto
su più
righe
</tipo>
...
Ecco come faccio:
Ricavo un array con le righe di configurazione.txt tramite file(configurazione.txt)
Con una funzione assegno i contenuti che stanno tra <tipo_contenuto>...</tipo_contenuto> a delle variabili
Nel form l'utente può ora modificare attraverso una textarea (<textarea>$variabile</textarea>) queste variabili.
Quando, effettuate le modifiche, l'utente preme il tasto di invio si tratta di riscrivere configurazione.txt con i nuovi valori. Quindi raccolgo i dati provenienti dal form in questo modo:
Codice PHP:
$array[] = "<tipo>\n".trim (stripslashes ($_POST['variabile']))."\n</tipo>";
e dopo avere aperto il file con fopen lo riscrivo con un ciclo foreach. Fine
Mi pare quasi di sentire la domanda: "Ma dove sta il problema?". Vi accontento subito.
Dopo la riscrittura le terminazioni di riga si sono duplicate, così per intenderci
<tipo>
contenuto
su più
righe
</tipo>
e si moltiplicano ad ogni modifica.
Avrei anche risolto ma non capisco perchè se al primo passaggio ricavo l'array in questo modo:
Codice PHP:
$array = str_replace ("\r", "", file (configurazione.txt)):
eliminando cioè \r con str_replace il problema sparisce.