Reges geht nicht .. [Help | Denkanstoß]

moritzmoritzz

Mitglied
Hallo,

habe folgenden String:

"Backup completed at 15.06.2014 01:47:14 with 0 error(s), 2874 warning(s)"
und folgendes pattern: "/Backup completed at (.*) with (.*) error\(s\)/"
alles wird auf preg_match angewandt.

wenn ich den String aus einem Array erhalte (es kommt aus einer log-datei) funktioniert der Pattern komischerweise nicht .. wenn ich aber den string hart in den Code hacke funktioniert es.

also:
PHP:
$str = "Backup completed at 15.06.2014 01:47:14 with 0 error(s), 2874 warning(s)";
funktioniert mit dem Pattern.
aber:
PHP:
$str = $lines[$index];
funktioniert nicht mit dem Pattern.

Ich arbeite nicht das erste mal mit regex. Ich bin am verzweifeln .. jemand eine Idee? Es ist utf8 encoded.
 
Du kannst Dir die ganze Sache auch um einiges verkürzen:
PHP:
$pattern = "/([0-9][.0-9:]*)/";
Das findet alle Zeichenketten, die mit einer Ziffer beginnen und auf die dann weitere Ziffern, Punkte und Doppelpunkte folgen (können).
 
Ich habe vielleicht vergessen zu erwähnen was ich haben möchte .. es geht um die Anzahl der Errors .. also der Nummer vor "error(s)" und wie gesagt funktioniert es, wenn ich den string hart code aber wenn ich ihn aus einem array hole scheint der pattern nicht zu gehen. Auch nicht mit einem "trim()". Es ist ASCII encoded ..
 
Hast du ein Log-File, das du anhängen kannst? Muss auch nicht das ganze sein, sagen wir 10 Zeilen davor und danach genügen.

Und was ist es denn jetzt, unicode oder ascii? Ist aber eigentlich egal, denn alle Zeichen sind eh im ASCII-Bereich.
 
Zurück