Cancellare una Stringa di testo da un file txt

Doctorv

Nuovo Utente
13 Lug 2013
6
0
0
Salve,
Avrei un problema con la cancellazione di alcune righe di testo da un file txt.

In pratica io nel file txt ho circa 3500 email, solo che in alcune righe ci sono delle parole-frasi che non sono email.

Vorrei fare in modo che quelle frasi-parole spariscano, lasciando solo le e-mail.

Vi ringrazio in anticipo.
 
Ma non ce la possibilità di cancellare il contenuto della riga che non contiene la '@' ?
 
Se il tuo file è scritto in questo modo (ad esempio):

[email protected]
ciao oggi è un bel giorno
[email protected]
[email protected]

Allora se devi eliminare la seconda riga basta lavorare riga per riga e alla fine scrivere tutto su un nuovo file.
PHP:
$rows = file('testo.txt', FILE_SKIP_EMPTY_LINES);

foreach ($rows as $row_num => $row) {
//controllo con una regex che ci siano le @ nella riga.
...
//prendo la riga e la aggiungo a una variabile che contiene tutto il testo da scrivere poi sul file.
    $testo.= $row;
}
file_put_contents('testo.txt', $testo);
 
Salve...
Ho provato a fare il codice però c'è un problema mi dà questi errori :
Notice: Undefined variable: testo in C:\Program Files\EasyPHP-12.1\www\stringa non valida\prova.php on line 21

Fatal error: Cannot redeclare verifica() (previously declared in C:\Program Files\EasyPHP-12.1\www\stringa non valida\prova.php:7) in C:\Program Files\EasyPHP-12.1\www\stringa non valida\prova.php on line 7


Il codice che ho inserito è questo:
PHP:
<?php
$rows = file('email.txt', FILE_SKIP_EMPTY_LINES); 

foreach ($rows as $row_num => $row) { 

function verifica($modello_email){
$controllo = ereg("^[^@ ]+@[^@ ]+\.[^@ \.]+$", $modello_email);
if ($controllo)
{
  print("<p><La email che hai inserito è OK!");
}
 else 
{ 
	
	print("<p><i>Opss...Riprova</i></p>");
}
}
 
    $testo.= $row; 
} 
file_put_contents('solo_email.txt', $testo); 
?>

Dov'è che ho sbagliato?


Scusatemi, io sono solo all'inizio del PHP!
 
Non puoi definire una funzione in un ciclo, o sarà definita più volte. Inoltre le funzioni ereg sono deprecate in favore delle PCRE. Nel caso dell'email, poi, puoi usare direttamente filter_var.
PHP:
<?php
$rows = file('email.txt', FILE_SKIP_EMPTY_LINES);

foreach ($rows as $index => $row) {
    if (!filter_var(trim($row), FILTER_VALIDATE_EMAIL)) {
        unset($rows[$index]);
    }
}

file_put_contents('solo_email.txt', implode('', $rows));
 
Ultima modifica:

Discussioni simili