Einzelnen Beitrag anzeigen
Alt 16.03.2008, 00:44   #1
iG0r
Gesperrt
 
Registriert seit: 14.08.2003
Alter: 47
Beiträge: 915


Standard PHP preg_match schluckt Daten zwischen < >

Ich bin schon leicht verzweifelt
Wollte heute mal so nebenbei einen kleinen Socket Server und Log Parser für einen Team Fortress 2 Gameserver basteln. Es klappt auch fast alles wunderbar. Leider schluckt mir preg_match die Steam-Id des Spielers, was nich gerade optimal ist. Beispiel:

PHP-Code:

<?php

$mystream 
'L 03/15/2008 - 22:45:37: "tester<317><STEAM_0:1:23456789><Blue>" say "das ist ein test!"';
preg_match("^(.*?) (\d+/\d+/\d+) (.*?) (\d+:\d+:\d+:) (\".*?<\d+><STEAM_\d+:\d+:\d+><.*?>\") (say|say_team) (\".*?\")$^"$mystream$matches);
print_r($matches);

?>
Und das Array das ist bekomme, sieht dann leider so aus:

PHP-Code:

Array
(
    [
0] => L 03/15/2008 22:45:37"tester<317>" say "das ist ein test!"
    
[1] => L
    
[2] => 03/15/2008
    
[3] => -
    [
4] => 22:45:37:
    [
5] => "tester<317>"
    
[6] => say
    
[7] => "das ist ein test!"

Leider fehlt bei [5] nach dem Spielernamen und id <STEAM_0:1:23456789><Blue>. Warum hier die Steamid und dann Noch das Team geschluckt wird, ist mir schleierhaft. Warscheinlich fehlt mir da irgendwas

So einfach wie ich mir das gedacht habe, ist es dann im Detail wohl doch nicht. Die Steam-id würde ich schon sehr gerne mit loggen, warum wird alles nach der Spieler-id <317> bis zum Ende der Anführungszeichen " geschluckt?

Hilfe!
Danke
iG0r ist offline   Mit Zitat antworten