Felix Riesterer: Performance, nur erste zeile lesen: fope file, file_get_contens

Beitrag lesen

Lieber Mike,

$cont = preg_replace('~^([^\r\n]+).*~', '\1', $cont);

ich habe das mal probiert aber dann kommen schon Inhalte der 2.zeile mit rein.

ja, in meinem Muster fehlt ein (?s), damit nicht zeilen-orientiert gelesen wird.

$cont = preg_replace('~(?s)^([^\r\n]+).*~', '\\1', $cont);

Und ist es nicht sogar so, dass gerade regex nicht zu empfehlen sind bei solchen Aufgaben, eben wegen Performance?

Diese RegEx-Geschichte wird einmal pro Datei für eine überschaubare Stringlänge ausgeführt. Das ist OK. Hätte ich eine RegEx-Prüfung in der Schleife vorgenommen, wäre das etwas anderes gewesen - dort verwende ich aber strpos().

Ich habe mich deswegen für eine RegEx-Prüfung entschieden, da ich gerne auf "Nummer sicher" gehe, und in Deinen Dateien vielleicht einmal ein Zeilenende ohne Linefeed (\r) stehen könnte. Deine strpos()-Funktion würde dieses dann nicht finden...

Liebe Grüße,

Felix Riesterer.

--
ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)