php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2004

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 17.10.2004, 10:52  
Gast
 
Beiträge: n/a
Standard [Erledigt] Doppelte Einträge aus Textdatei entfernen

Hey,

sicher eine einfache Sache, für die die es wissen..

Ich suche eine Möglichkeit wie ich aus einer Textdatei doppelte Einträge, in diesem Fall eMail Adressen, per Script löschen kann. Die mails stehen alle in einer Zeile und sind durch Komma getrennt, z.B.:

mail@1.de,mail@2.de,mail@3.de,mail@4.de,

Nun wie kann ich doppelte Einträge löschen so das immer nur eine mail von den doppelt oder dreifach genannten übrig bleibt, z.B.:

mail@1.de,mail@2.de,mail@2.de,mail@3.de,mail@3.de, mail@3.de,
Soll ersetzt werden durch:
mail@1.de,mail@2.de,mail@3.de,

Ich hatte zwar schon was ähnliches im Netz gefunden, aber das hilft mir auch nicht viel weiter, es gibt nur eine echo""; und keine löschfunktion und die einzelnen mails müssten jede einzelne in einer zeile stehen. Setz ich mal nur als evtl. Denkanstoß rein.

Code:
<?php
$datei = "textdatei.txt";

$fgs = file($datei);
$fgs = array_map('trim', $fgs); // (PHP 4 >= 4.0.6) // Zeilenumbrüche in allen Elementen entfernen
$fgs = array_unique($fgs); // (PHP 4 >= 4.0.1) // Duplikate entfernen

/** und Daten wieder wegschreiben. Zeilenmbrüche nicht vergessen */
foreach($fgs as $line)
{ // zum Testen erstmal nur echo-Ausgabe
    echo $line, "\n";
}
?>
Hoffe das das jemand liest und mir helfen kann.

Gruß,
Robman
 
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 17.10.2004, 11:04  
Gast
 
Beiträge: n/a
Standard

also von der reihenfolge her ist das schon ok so .. wenn ich das auf die
schnelle richtig nachvollzogen hab.

der schritt der bei dir halt fehlt ist das speichern des neuen strings ..
dazu kannst du die funktionen fopen(), fwrite() und fclose() sowie join() brauchen.
ansonsten kann dir vllt noch print_r() helfen .. ist zum debugging von arrays
eindeutig besser geeignet als dauernd ne foreach() schleife

# edit

ah natürlich .. asche auf mein haupt .. explode anhand des kommas fehlt
natürlich .. ne ne ne sowas darf nich sein.
 
Alt 17.10.2004, 13:03  
Gast
 
Beiträge: n/a
Standard

Code:
// 1. Datei einlesen (enthält mailaddy1,mailaddy2,mailaddy3,...)
$fgs = implode("",file('email.txt'));

// 2. Array an ","-Positionen trennen
// hier war Dein Fehler - Dein Array war 1 Element groß - ein einziger String mit dem kpl. Dateiinhalt ;)
$x = explode(",",$fgs);

// 3. Duplikate entfernen 
$x = array_unique($x); 

print_r($x);
c'est ca.
 
Alt 17.10.2004, 13:38  
Gast
 
Beiträge: n/a
Standard

Ok, klappt wunderbar!

Meine textdatei sieht so aus:

mail@1.de,mail@1.de,mail@2.de,mail@2.de,mail@2.de, mail@3.de,mail@3.de,mail@3.de,mail@3.de,
Und nach Scriptausführung erscheint:
Array ( [0] => mail@1.de [2] => mail@2.de [5] => mail@3.de [9] => )

Nur wie kann ich das ganze jetzt in der Textdatei speichern?

Code:
<?
$datei = "textdatei.txt";
$fgs = implode("",file($datei));

// 2. Array an ","-Positionen trennen
// hier war Dein Fehler - Dein Array war 1 Element groß - ein einziger String mit dem kpl. Dateiinhalt ;)
$x = explode(",",$fgs);

// 3. Duplikate entfernen
$x = array_unique($x);

print_r($x);

?>
Zitat:
der schritt der bei dir halt fehlt ist das speichern des neuen strings ..
dazu kannst du die funktionen fopen(), fwrite() und fclose() sowie join() brauchen.
ansonsten kann dir vllt noch print_r() helfen .. ist zum debugging von arrays
eindeutig besser geeignet als dauernd ne foreach() schleife
Genau dieser Schritt fehlt noch. Wie mach ich das an dem Code Beispiel?
 
Alt 17.10.2004, 13:39  
Gast
 
Beiträge: n/a
Standard

indem du dir das manual zu den entsprechenden funktionen anschaust.
 
Alt 17.10.2004, 13:47  
Gast
 
Beiträge: n/a
Standard

Gibts da nicht ein universal "einlesen-ändern-speichern" script das ich da reinsetzen kann?
 
Alt 17.10.2004, 13:51  
Gast
 
Beiträge: n/a
Standard

nein.
 
Alt 17.10.2004, 13:55  
Gast
 
Beiträge: n/a
Standard

1. mit fopen eine Datei öffnen
2. mit fwrite den Inhalt Deines Array reinschreiben
Wenn Du möchtest, kannst Du entweder mit einer for-Schleife
den Inhalt Element für Element schreiben, oder mit
$wieder_ein_string = implode(",",$x); den unique-Rest wieder in
einen String zurückverwandeln und den String sichern.
 
Alt 17.10.2004, 14:14  
Gast
 
Beiträge: n/a
Standard

So gehts nicht...

Code:
<?
$datei = "textdatei.txt";
$fp = fopen("$datei","w");
$fgs = implode("",file($datei));
$x = explode(",",$fgs);
$x = array_unique($x);
fwrite($fp,$x);
fclose($fp);
?>
Beim Ausführen schreibt die Funktion nur "Array" in die Textdatei.. eine bessere Idee???
 
Alt 17.10.2004, 14:23  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von Robman
Beim Ausführen schreibt die Funktion nur "Array" in die Textdatei.. eine bessere Idee???
Ja, zum Beispiel die, welche ich Dir 17.10.2004, 13:55 gepostet habe.

Es scheint mir, als solltest Du vielleicht mal ne Stunde was anderes machen - Rasenmähen, Origami, etc. - und dann nochmal den Thread durchlesen - dann fällt es Dir garantiert wie Schuppen aus den Haaren.... Stichwort: implode(","...

Code:
$fp = fopen("$datei","w"); 
$fgs = implode("",file($datei));
ist auch nicht der richtige Weg. Du löschst den Inhalt der Datei mit fopen, ehe Du ihn einliest? nicht gut.

Code:
$fgs = implode("",file($datei));
$fp = fopen("$datei","w");
Sorum wird ein Schuh draus.
 
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
BOM aus Textdatei entfernen GSJLink PHP-Fortgeschrittene 2 01.05.2008 12:05
Formular Textdatei ausgeben php_einsteiger PHP Tipps 2008 3 06.03.2008 08:02
Doppelte einträge löschen Riks Datenbanken 6 25.04.2007 19:29
Variable als Textdatei Lokal speichern HSFighter PHP Tipps 2006 3 28.02.2006 12:13
TExtdatei aktualiesieren PHP Tipps 2006 1 13.02.2006 22:01
[Erledigt] mit php umlaute un Textdatei schreiben (Apple Tiger PHP4) PHP Tipps 2007 7 29.12.2005 19:08
\ entfernen Stinger PHP Tipps 2005-2 3 10.07.2005 19:35
Textdatei durchsuchen CSS PHP Tipps 2005 3 26.02.2005 15:31
Doppelte Werte im Array löschen mittels hash PHP Tipps 2004-2 1 09.12.2004 11:43
$text in eine textdatei schreiben janni PHP Tipps 2004-2 5 27.11.2004 19:36
[Erledigt] Werte aus Textdatei auslesen PHP Tipps 2004 22 19.10.2004 15:00
Newsscript Ã* la Textdatei PHP Tipps 2004 10 10.09.2004 22:56
Eintrag aus Textdatei löschen? PHP Tipps 2004 1 04.09.2004 18:21
Textdatei auslesen und Dateien downloaden PHP Tipps 2004 1 15.08.2004 13:05
Zeichen aus eine, ".txt" File entfernen PHP Tipps 2004 2 28.06.2004 17:37

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
batch doppelte zeilen löschen, doppelte einträge textdatei, txt doppelte einträge löschen, php doppelter eintrag text datei, vim doppelte zeilen löschen, textdatei doppelt, php datei doppelte einträge, doppelte einträge aus textdatei entfernen, doppelte email adressen in textdatei löschen, vim doppelte zeilen entfernen, doppelte einträge in textdatei, doppelte datensätze textdatei, doppelte inträge in textdatei löschen mit php, email adressen aus textdatei rausfiltern, doppelte zahlen in datei finden, 2 txt datei duplikate, doppelte einträge in txt löschen, aus textdatei doppelte zeilen filtern batch, doppelte einträge in textdatei entfernen, textdatei gleiche einträge

Alle Zeitangaben in WEZ +2. Es ist jetzt 00:22 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.