ho un file di testo dal quale rimuovere del testo. ho usato preg_replace($pattern, "", $testo) sul contenuto esportato con fwrite e quindi fread. Il problema sono le righe vuote che rimangono, come le elimino?
Grazie
ho un file di testo dal quale rimuovere del testo. ho usato preg_replace($pattern, "", $testo) sul contenuto esportato con fwrite e quindi fread. Il problema sono le righe vuote che rimangono, come le elimino?
Grazie
Le righe vuote non sono realmente vuote...ci saranno i caratteri di "accapo", quello che devi fare è sostituire quei caratteri con niente.
Attenzione però perchè in Windows gli accapo sono codificati in un modo ed in Unix/Linux in un altro.
Prova:
Codice PHP:
$testo = preg_replace("/^[\n|\r]/", "", $testo)
Administrator of NAMDesign.Net
In questo modo elimini anche i ritorni a capo delle righe non vuote però, alla fine (se non legge una riga per volta) si ritroverebbe con tutto il testo su una rigaOriginariamente inviato da LeaderGL
Le righe vuote non sono realmente vuote...ci saranno i caratteri di "accapo", quello che devi fare è sostituire quei caratteri con niente.
Attenzione però perchè in Windows gli accapo sono codificati in un modo ed in Unix/Linux in un altro.
Prova:
Codice PHP:
$testo = preg_replace("/^[\n|\r]/", "", $testo)
beh si, io davo per scontato che o leggesse almeno una riga per volta oppure avesse già tutto il testo e da li togliere le righe vuote.
anche se cmq quella regexp può migliorare, era un esempio.
Administrator of NAMDesign.Net
intanto grazie. Ora ho un altro problema, mi serve una funzione che mi cancelli una stringa esatta da un file, io ho fatto così:
ereg_replace mi serve perché devo cancellare HTML quindi ci sono tag ed url. inoltre il secondo argomento ha 3 backslash prima di '1'. sarà una sicurezza del forum x alcuni caratteri.Codice PHP:
$file = fopen($file_path, 'r');
$current_text = fread($file, filesize($file_path));
fclose($file);
$text = ereg_replace('([/.?])', '\\\1', $text);
$pattern = "/($text)/";
$new_text = preg_replace($pattern, "", $current_text);
$file = fopen($file_path, 'w');
fwrite($file, $new_text);
fclose($file);
Però non funziona bene...
Perché usi una volta ereg_replace e poi preg_replace? Usa sempre la seconda funzione, la prima da php 5.3.0 è stata deprecata.
Prego il moderatore di eliminare questo post. Grazie
Giorgio
L'esperienza è il tipo di insegnante più difficile. Prima ti fa l'esame, e poi ti spiega la lezione. (Oscar Wilde)
Qui due facili modi di eliminare le righe vuote da qualsiasi file di testo:
- http://galileo2010.blogspot.it/2014/...a-file-di.html
- http://galileo2010.blogspot.it/2014/...iasi-file.html
Giorgio
L'esperienza è il tipo di insegnante più difficile. Prima ti fa l'esame, e poi ti spiega la lezione. (Oscar Wilde)