PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bestimmte Zeile aus Datei löschen?!


Satherlor
22.11.2003, 16:35:58
Moin,
ich möchte gerne eine Zeile aus einer Datei löschen. Ich weiß allerdings nicht ihren inhalt, sondern nur welche Zeile das ist. Also bespielsweise Zeile 3 soll gelöscht werden. Wie kann ich einen Zeileninhalt von einer von mir angegebenen "Zeilennummer" auslesen?

Ben20
22.11.2003, 16:58:49
Du kannst mit file() einen Datei zeilenweise in einen Array lesen:


$daten = file('datei.txt');
//$daten[0] ist jetzt die erste Zeile
//$daten[1] die zweite ...


Danach kann man den alten Array in einen neuen schreiben, ohne dabei die 3 Zeile zu übernehmen


$daten_neu = array();
for($i = 0; $i < sizeof($daten); $i++) {

if($i != 2) {

$daten_neu[] = $daten[$i];

}

}


Anschließend brauchst Du das ganze nur noch in die Datei zurückspeichern:


$input = join('', $daten_neu);
//Jetzt den Array zu einem String zusammen

$fp = fopen('datei.txt', w);
fputs($fp, $input);
fclose($fp);

Satherlor
30.11.2003, 20:07:02
was mache ich denn, wenn ich nur weiß, das ein bestimmer Eintrag gelöscht werden muss? Also in einer Datei ein Eintrag "ABC123" gelöscht werden muss? Wie kann ich das umsetzten?

Wo in dem Skript ist denn die Zeilenangabe zu finen?

c4
30.11.2003, 20:25:11
Wo in dem Skript ist denn die Zeilenangabe zu finen? if($i != 2) war die Zeilenangabe. unset($data[2]) wäre allerdings praktischer gewesen.

Um einen bestimmten Datensatz zu finden, nutzt Du einfach die Funktion array_search() (http://php.net/manual/en/function.array-search.php):<?php
$arr[]='asd';
$arr[]='a1sd';
$arr[]='as2d';
$arr[]='asd3';
$arr[]='a1sd';

$search='a1sd';
if (is_numeric(array_search($search, $arr))) {
unset($arr[array_search($search, $arr)]);
}
print_r($arr);

exit;
?> Es wird nur der erste, gefundene Datensatz entfernt!