View Full Version : [PHP] Scrittura file
Ragazzi mi serve un aiuto. Devo modificare una riga data in un file di testo...Come faccio a cancellare quella riga e riscriverla invece di cancellare e riscrivere l'intero file? Help me!!
Xalexalex
07-05-2006, 19:52
$array1=file($percorso_file);
array_map("trim",$array1);
$array_finale=array_diff($array1,$rigadatogliere);
$riga=implode("\n",$array1);
$fp=fopen($percorso,"w");
fwrite($riga);
fclose($fp);
Caput?
No, non ho capito... :cry:
Xalexalex
07-05-2006, 20:58
No, non ho capito... :cry:
L'ho fatto apposta. :fagiano:
Scherzo...
Allora, con la funzione file() ti apre il file e te lo salva in un array, dove ogni array è una riga del file. Poi leva gli spazi all'esterno, da ogni riga, con "trim".
Fatto ciò, con array_diff, leva dal primo array il campo che corrisponde alla riga che vuoi togliere dal file. Dopo questo ancora, dall'array rimasto, crea una stringa che è l'incollaggio delle righe rimaste con un acapo. Poi scrive questa stringona sul file di partenza, aperto in "w" per cancellare il contenuto.
Spero di essere stato un po più chiaro :D
Ciauz,
Alex
Perfetto, in pratica cambio la riga e riscrivo l'intero file....questo lo so fare, ma se il file cresce sostanzialmente??? Io volevo semplicemente spostare il puntatore alla riga giusta e riscriverla
Xalexalex
07-05-2006, 21:10
Sono un demente...
Mi sembrava dovessi solo cancellarla quella riga :fagiano:
Puoi usare il metodo di prima, però allungato.. Invece che fare array_diff, cicli tutto l'array con foreach, e quando trovi la riga che ti serve la sostituisci. Poi scrivi il file come sopra.
Spero di aver capito io stavolta..
Non credo siamo ancora arrivati al punto....In questo modo io devo cmq riscrivere tutte le righe del file per modificarne una soltanto e questo non va bene. Io vorrei semplicemente scrivere quella interessata
Xalexalex
07-05-2006, 21:43
Per fare ciò che chiedi tu dovresti in pratica... leggere ogni riga con fgets, controllare se è quella che ti serve, e se è quella, tornare su di una riga col puntatore, cancellarla e riscriverla giust? Il problema è che non so come far tornare su di una riga il puntatore... A meno di non contare tutti i byte letti e poi tornare al punto con fseek...
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.