Bestimmte Zeichenfolge in Txt Datei löschen

d4k4

Erfahrenes Mitglied
Wie ich eine bestimmte Zeile löschen kann, weiss ich. Wie lösch ich aber z.b. einen bestimten Namen?
 
Konkretisier mal, wie schaut denn deine textdatei aus?

angenommen du hast einen text:

$string = "Ein text mit wörter, und ein name: horst";

du möchtest 'horst' löschen

benutzte einfach str_replace:

$string = str_replace("horst","",$string);

dann wieder in deine datei schreiben!
 
jedesmal wenn sich ein user einloggt wird sein name in eine txt datei geschrieben. wenn er sich ausloggt, soll der name wieder gelöscht werden.

name1
name2
name3
usw.
 
naja,

wenn er sich ausloggt öffnest du eben die datei
in einer schleife überprüfst du die namen in der datei mit dem name des ausgeloggten, stimmt er überein, dann passiert nichts, wenn nicht, schreibt er einfach den anderen namen wieder rein

codeschnipsel:
PHP:
//das ganze eben dann in der schleife

if($singleuser != $zuloeschen){ 
   $entry .= $singleuser;
}
 
so hab ich mir das auch gedacht nur über

PHP:
$datei = "online.txt";
$array = file($datei);
$zahl = count($array);
for ($i=0,$i<$zahl,$i++){

komm ich nicht hinaus. die if bedingugj fehlt mir
die variable lautet $name.
if( $name = ? ){
delete ?

deine if-bedingung versteh ich nicht

if($singleuser != $zuloeschen){
$entry .= $singleuser;
}

wenn die die 1 varibale nicht mit der zweiten übereinstimmt wird an der variable $entry die variabel drangehängt.versteh ich nicht...
 
ok, also

PHP:
$datei = "online.txt";
$fp = fopen($datei, "r");

while($zeile = fgets($fp, 4096)){
    
    if($zeile != $zuloeschen){  //hier überprüft er die user der datei mit dem user, der zu löschen ist :)
    $entry .= $zeile
    }
}

fclose($fp);
//geänderte einträge in datei schrieben
$fp = fopen($datei, "w");
fputs($fp, $entry);
fclose($fp);

hoffe jetzt hast es verstanden ;)
 
ne
1. hab ich die if-bedingung immer noch nicht verstanden. siehe mein post vorher
und
2. klappts so nicht :(
 
kann sein das mein script irgendwo einen fehler hat...
habs nicht überprüft :rolleyes:

die if abfrage passt aber so

also, du hast deine datei mit deinen namen drinnen

diese sieht so aus:

name1
name2
name3

usw.

so
jetzt kommt deine while schleife :
hier liest er zeile für zeile die datei aus

also:
1. schleife $zeile = name1
2. schleife $zeile = name2
3. schleife $zeile = name3

jetzt kommt deine if abfrage mit in die while schleife:

also
1.schleife: $zeile = name1-> wenn name1 nicht genauso wie der zu löschende name ist -> schreibe den namen in $entry.
flas nicht -> passiert nix !(schleife geht weiter)

2.schleife: $zeile = name2-> wenn name2 nicht genauso wie der zu löschende name ist -> hängt den namen an $entry.
flas nicht -> passiert nix !(schleife geht weiter)

3.schleife: $zeile = name3-> wenn name3 nicht genauso wie der zu löschende name ist -> schreibe den namen in $entry.
flas nicht -> passiert nix !(schleife geht weiter)

d.h. er schreibt nurnoch die namen rein, die auch rein solln...

danach schreibts du alle user mit $entry wieder in die datei, nur ohne den, der raus soll ;)
 
ahh ;-)
jetzt hab ichs verstanden.schonmal danke für die erklärung. geht aber trozdem nicht :(
PHP:
$datei = "online.txt";
$fp = fopen($datei, "r");

while($zeile = fgets($fp, 4096)){
    
    if($zeile != $name){  
    $entry .= $zeile;
    }
}

fclose($fp);

$fp = fopen($datei, "w");
fputs($fp, $entry);
fclose($fp);
 
Zurück