tingel
Goto Top

PHP - Text ab bestimmter Zeile löschen

Hallo,

ich habe eine Textdatei, die immer neu erstellt wird, ähnlich aussieht, aber unterschiedlich lang.
Auf den Inhalt der Datei hab ich keinen Einfluss.
Jedoch möchte ich die Datei ab einer gewissen Zeile, mit einem festen Text abschneiden und speichern.

Einlesen etc klappt alles einwandfrei.
Also wenn der Text in Zeile 15 vorkommt, dann alles ab einschließlich Zeile 15 löschen.
Das ganze in PHP.
Gibt es eine Funktion, die das macht?
Oder kann mir jemand helfen?

Content-Key: 284095

Url: https://administrator.de/contentid/284095

Printed on: April 26, 2024 at 08:04 o'clock

Mitglied: 122990
122990 Sep 28, 2015 updated at 21:13:03 (UTC)
Goto Top
Member: tingel
tingel Oct 02, 2015 at 13:40:42 (UTC)
Goto Top
Danke für die Antwort.
preg_split ist wohl die richtige Wahl.
Komme trotzdem nicht weiter.
Wenn ich den Text direkt eingebe, klappt es, wenn ich ihn aber als Parameter übergebe (mit $) und ich das ganze wieder in das ursprüngliche Array speichern mag, kommt die Meldung "preg_match() expects parameter 2 to be string, array given in"
Der Auffruf wäre folgender: $text = preg_split("/xxxx(.*)/i", $text);
Sprich, wenn vier "x" im Text vorkommen, soll alles davor in $text geschrieben werden, der rest soll abgeschnitten werden.
Was mach ich falsch?
Mitglied: 122990
Solution 122990 Oct 02, 2015, updated at Oct 06, 2015 at 13:30:03 (UTC)
Goto Top
expects parameter 2 to be string, array given in"
Dann hast du den Text nicht als String sondern Array eingelesen, sagt ja schon die Fehlermeldung ...
Beispiel wie es problemlos läuft ...
back-to-topMit preg_split
// Eingabepfad
$fileIN = "testdatei.txt";  
// Ausgabepfad
$fileOUT = "testdatei2.txt";  
// Text der Datei einlesen
$text = file_get_contents($fileIN);
// Text trennen (Ausgabe ist ein Array der Teile ohne den Trenner)
$arrParts = preg_split("/xxxx/i",$text);  
// ArrayIndex 0 (also alles was vor den Trenner steht) in die Ausgabedatei schreiben
file_put_contents($fileOUT,$arrParts);
back-to-topoder mit preg_replace
$fileIN = "testdatei.txt";  
$fileOUT = "testdatei2.txt";  
$text = file_get_contents($fileIN);
$text = preg_replace('/(.*?)xxxx.*/si',"$1",$text);  
if ($text !== NULL){
    file_put_contents($fileOUT,$text);
}
Member: tingel
tingel Oct 06, 2015 at 13:11:30 (UTC)
Goto Top
Vielen Dank.
So funktionierts. Muss wohl doch etwas tiefer in PHP einsteigen.