Supportnet / Forum / Skripte(PHP,ASP,Perl...)
Zeile löschen aus Textdatei
Frage
Hallo.Wie kann ich mit php eine bestimmte Zeile aus einer Textdatei löschen. Es soll nur die Zeile gelöscht werden die ein bestimmtes Wort enthält. Wie funktioniert das. Das geht doch mit unlink aber wie gibt man an das die Zeile nicht mit der Zeilennummer angegeben wird sondern mit einem Wort.
Antwort 1 von JanVer
Unlink löscht eine gesamte Datei.
Wenn Du nur eine Zeile löschen möchtest, dann musst Du die Datei einlesen und wieder rausschreiben. Wenn die gesuchte Zeile kommt, dann überspringst Du sie halt.
Am leichtesten ist es, die gesamte Datei in ein Array zu lesen und dann das Array abzuarbeiten. Schau mal unter dem Befehl file) nach.
array file ( string filename [, int use_include_path] )
Hier der Link
http://de2.php.net/manual/de/function.file.php
Wenn Du nur eine Zeile löschen möchtest, dann musst Du die Datei einlesen und wieder rausschreiben. Wenn die gesuchte Zeile kommt, dann überspringst Du sie halt.
Am leichtesten ist es, die gesamte Datei in ein Array zu lesen und dann das Array abzuarbeiten. Schau mal unter dem Befehl file) nach.
array file ( string filename [, int use_include_path] )
Hier der Link
http://de2.php.net/manual/de/function.file.php
Antwort 2 von echoslider
Ich hab da mal was gebastelt. Dieses Script liest alle Zeilen einer Datei aus(mit Nummerierung) und erzetzt den inhalt aus einer gesuchten Zeile ($suchmuster) mit dem Text aus $neu. Nur der Text von $suchmuster funktioniert nicht aber warum? Nach mehreren Versuchen habe ich rausgefunden das das an den < oder > liegt.Aber was kann ich dagegen machen?
<?php
$suchmuster = ´<iframe src ="index.php?x=Opel"width="50%" noresize scrolling=no FRAMEBORDER=NO BORDER=0 FAMESPACING=0 height="45%"></iframe><br>´;
$neu = ´ ´;
$lines = file (´index.htm´);
// Durchgehen des Arrays und Anzeigen des HTML Source inkl. Zeilennummern
foreach ($lines as $line_num => $line) {
$i= "Line #<b>{$line_num}</b> : " .preg_replace($suchmuster, $neu , htmlspecialchars($line)) . "<br>\n";
echo "$i";
}
?>
<?php
$suchmuster = ´<iframe src ="index.php?x=Opel"width="50%" noresize scrolling=no FRAMEBORDER=NO BORDER=0 FAMESPACING=0 height="45%"></iframe><br>´;
$neu = ´ ´;
$lines = file (´index.htm´);
// Durchgehen des Arrays und Anzeigen des HTML Source inkl. Zeilennummern
foreach ($lines as $line_num => $line) {
$i= "Line #<b>{$line_num}</b> : " .preg_replace($suchmuster, $neu , htmlspecialchars($line)) . "<br>\n";
echo "$i";
}
?>

