Cancellare una specifica email da un elenco in un file txt

Cosina

Utente Attivo
27 Dic 2016
68
0
6
Buongiorno, approfitto ancora della vostra competenza. Considerato un elenco di indirizzi email in un file.txt messi in questo modo:

[email protected]
[email protected]
[email protected]

Vorrei creare un modulo per cancellare solo un indirizzo specifico, tipo così:

HTML:
<form method="post" action="remove.php">
            <p>Email Address: <input type="text" name="email"></p>
            <input type="submit" value="Remove" name="remove">
        </form>
Ho trovato questo codice in rete, non so se puo servire (ovviamente così non funziona) e, comunque, non so configurarlo per adattarlo al mio caso. Potete suggerirmi il codice giusto, per piacere? Infinitamente grazie.

PHP:
<?php
    $email = $_POST["email"];
    $basetext = file_get_contents("file.txt");
    $oldWord = "$email";
    $newWord = ",";
    $text = str_replace($oldWord , $newWord , $basetext);
    $str1 = $basetext;
    // echo strlen($str1);
    $str2 = $text;
    // echo strlen($str2);
    $fp = fopen('file.txt', 'w');
    fwrite($fp, $text);
    fclose($file);

    if ($str1 > $str2) {
        echo ("You Have Successfully Unsubscribed From Our Newsletter....<br>You Will Not Receive Any More Emails From Us.");
    } else {
        echo ("The Email Address You Specified Is Not In Our Mailing List.");
    }
?>
 

Cosina

Utente Attivo
27 Dic 2016
68
0
6
Sono riuscita a trovare la soluzione da sola. Posto il codice nel caso servisse ad altri e per eventuali osservazioni e/o correzioni. Un saluto a tutti.

PHP:
if( $_POST != null ) {
   
    $email = $_POST['email'];

    $txt_file    = file_get_contents('file.txt');
    $rows        = explode("\n", $txt_file);

    unlink('file.txt');
    $new_file = fopen('file.txt', 'a+');
    foreach($rows as $row)
    {
        $data = explode(';', $row);
       
        if( $data[0] == $email ) {

        } else {
            fwrite( $new_file, $row . "\n" );
        }

    }
    fclose( $new_file );
   
    echo '<script type="text/javascript">alert("Succesfully unsubscription");window.history.go(-1);</script>';

}
 

macus_adi

Utente Attivo
5 Dic 2017
1.313
88
48
IT/SW
Sono riuscita a trovare la soluzione da sola. Posto il codice nel caso servisse ad altri e per eventuali osservazioni e/o correzioni. Un saluto a tutti.
Brava ma pensa anche a questa soluzione:

PHP:
$emails=file('IL_FILE_EMAIL');
$find=array_search('[email protected]',$emails);
if($find!==false)unset($emails[$find]);
file_put_content('IL_FILE_EMAIL',join("\r",$emails));
1- Ossia carichi tutte le email
2- Cerchi l'email che devi cancellare
3- elimini la chiave contenente l'email da cancellare
4- sovrascrivi il file

Come vedi potresti riuscire ad ottenere lo stesso risultato senza eseguire un loop!
 

Cosina

Utente Attivo
27 Dic 2016
68
0
6
Brava ma pensa anche a questa soluzione:

PHP:
$emails=file('IL_FILE_EMAIL');
$find=array_search('[email protected]',$emails);
if($find!==false)unset($emails[$find]);
file_put_content('IL_FILE_EMAIL',join("\r",$emails));
1- Ossia carichi tutte le email
2- Cerchi l'email che devi cancellare
3- elimini la chiave contenente l'email da cancellare
4- sovrascrivi il file

Come vedi potresti riuscire ad ottenere lo stesso risultato senza eseguire un loop!
Grazie mille, lo farò :)