Doppelter Eintrag in Text-Datei löschen

kevkev

Erfahrenes Mitglied
Hi,

Ich hab ne text-Datei in der bei einem aufruf einer seite der referer gespeichert wird. So, wenn aber die seite doppelt aufgerufen wird, kommt auch ein doppelter referer vor.
Wie kann ich denn später (nach dem die referere gespeichert worden sind) die doppelten löschen, bzw. nicht anzeigen lassen?

Ich hab das schon mit preg_match probiert, ich komm aber auf keinen grünen zweig...

Gruß kevin
 
Die Einträge in ein Array einlesen, dieses Array dann durchgehen, und jeden Eintrag in ein neues Array einfügen, falls er noch nicht in dem neuen Array enthalten ist.
Falls die Einträge Zeilenweise in der Textdatei gespeichert sind, kannst du diese mit fgets() zeilenweise auslesen, und dann in ein neues Array speichern, falls sie in diesem noch nicht enthalten sind. Dann sparst du dir das erste Array.
 
Oder mit [phpf]array_unique[/phpf].
Und fürs zeilenweise Einlesen in ein Array empfehle ich [phpf]file[/phpf].
 
Hi,

Also mit array_unique funktioiert das schon gut, aber wie kann ich das so ausgeben, das je zeile ein referer steht?

gruß kevin
 
Du öffnest die Datei mit [phpf]fopen[/phpf] und dem Parameter "w".
Du durchläufst das Array mit [phpf]foreach[/phpf] und schreibst jedes Item in mit [phpf]fputs[/phpf] in die Datei. Nach der Schleife schließt Du die Datei mit [phpf]fclose[/phpf].
Wenn Dir der Zeilenumbruch fehlt, füge jedem Item noch "\n" hinzu.

Oder meinst Du was anderes?

Gruß hpvw
 
Hallo,

nein, das meine ich nicht! Ich bekomme schon jeden referer in ein array. Die referer sind ja schon in der text-datei geschrieben worden. Nur bei der ausgabe soll jeder referer (nicht die doppelten) in eine zeile geschreiben werden. Also im browser soll pro zeile ein referer stehen.
wenn ich jetzt folgendes beispiel nehme:

PHP:
$input = array ("grün", "rot", "grün", "blau", "rot");
$result = array_unique ($input);
print_r($result);

Kommt ja das raus:
Array
(
[a] => grün
[0] => rot
[1] => blau
)

Wenn ich aber das mache:

PHP:
$input = array ("grün", "rot", "grün", "blau", "rot");
$result = array_unique ($input);
echo $result[0]; //Bei 0 wird grün ausgegen, bei 1 wird rot ausgegeben aber bei 2 wird dann nichts ausgegen!

Gruß kevin
 
Zuletzt bearbeitet:
Hi,

Ich wollte noch einen zähler einbauen, der denn jeweigen referer zählt und danach ausgibt.

Das sit bis jetzt mein code:

PHP:
$input = array();
$file=file("blue/views.dat");
for($i=0; $i<=50; $i++){
$input[] = $file[$i];
}
$result = array_unique ($input);
echo "<b><u>Blue</u></b></br>";
foreach ($result as $value) {
   echo "<a href=\"$value\" style=\"text-decoration: none\" target=_blank>$value</a><br/>\n";
   }

Wie bekomme ich das jetzt hin, das hinter jedem refer die anzahl der aufrufe steht?

gruß kevin
 
PHP:
$file=arsort(array_count_values(file("blue/views.dat"))); 

echo "Referrer auf diese Seite:<br/>\n";

foreach ($file as $referrer => $count) {
   echo "$count x <a href=\"$referrer\" style=\"text-decoration: none\" target=_blank>$referrer</a><br/>\n"; 
}
PHP hat für (fast) alles eine Funktion!
An meinem ersten PHP-Tag habe ich mir ein paar schnelle Erfolgserlebnisse gegönnt.
An meinem zweiten PHP-Tag habe ich ziellos in der Funktionsliste geblättert. Ich kam aus dem Staunen nicht mehr heraus, als ehem. Delphi-Coder.
...
Und am siebten Tage habe ich Delphi deinstalliert und in Ruhe mein Werk betrachtet ;-)

Gruß hpvw
 
Zuletzt bearbeitet:
Zurück