Eine kleine Anfängerfrage

joshua444

Grünschnabel
Hi

ich bin neu hier, habe vor ein paar wochen mit php angefangen und hätte ein paar fragen, da ich zur zeit an einem kleinem script schreibe.

a) ich würde gerne in einer txt-datei nach einem bestimmten zeichen suchen und hinter diesem zeichen soll alles gelöscht werden.
das klappt auch. nur dann wird alles gelöscht. ich würde aber nun gerne nur alles hinter dem Zeichen löschen, das auch in der selben Zeile ist. Also die zweite Zeile soll davon nicht betroffen sein.
Und mein Script soll die gesamte txt-datei so durchsuchen. es befindet sich in jeder zeile ein gewisses Zeichen, das soll gesucht werden und dann soll alles danach gelöscht werden.
in der nächsten zeile genauso wieder.
wie könnte ich das realisieren? ein kleines beispiel wäre sehr nett! :)

dankeschön und euch allen wunderschöne feiertage! :)
 
Habs verstanden. Das mit preg_replace funktioniert super :)
Nur eins: Wie lösche ich mit RegEx alles in der Zeile nach dem Zeichen ";" ? Beispielcode? :)

//edit: ich formuliers mal anders, bzw. machs anders:
ich würde gerne die gesamte text-datei durchsuchen. es soll jeder string gelöscht werden, außer diejenigen, in den ein "x" vorkommt.

lg.
 
Zuletzt bearbeitet:
Annahme: du meisnt mit Texten Zeilen. Also Jede Zeile die kein X enthelten sollen gelöscht werden.

Mit file() die Datei in einen Zeilen-Array einlesen.
Anschliessend mittels array_filter() die Zeilen ohne X ausfiltern und anschliessend kann man das ganze mit implode() wieder zu einem grossen String verbinden

PHP:
$textA = file('file.txt');
$newTextA = array_filter($textA, 'filter_x');
$newText = implode("\n", $newTextA);
echo $newText;

function filter_x($line){
    return (preg_match('/^.*X.*$/i', $line)) == 1;         
}


Nachtrag:
Du kannst natürlich auch mit preg_match_all() und dem Paramter m arbeiten. SO kannst du die ganez Datei auf einmal parsen. darum muss die Detei auch nicht mehr Zeilenweise eingelesen werden.

Modifier m (multiline)

Falls im Regulären Ausdruck Zirkumflex und Dollarzeichen in ihrer Funktion als Metazeichen verwendet werden, beziehen sich diese immer auf den gesamten Text. Ist der Modifier m gesetzt, so gelten ^ und $ nur für jede einzelne Zeile.

PHP:
  $text = file_get_contents('file.txt');
  preg_match_all( '/^.*X.*$/im', $text, $result); 
  $newText = implode("\n", $result[0]);
  echo $newText;
 
Zurück