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-ID: 284095

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

Ausgedruckt am: 14.11.2024 um 01:11 Uhr

122990
122990 28.09.2015 aktualisiert um 23:13:03 Uhr
Goto Top
tingel
tingel 02.10.2015 um 15:40:42 Uhr
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?
122990
Lösung 122990 02.10.2015, aktualisiert am 06.10.2015 um 15:30:03 Uhr
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);
}
tingel
tingel 06.10.2015 um 15:11:30 Uhr
Goto Top
Vielen Dank.
So funktionierts. Muss wohl doch etwas tiefer in PHP einsteigen.