Hi.
Ich arbeite z.Zt. an einem Parser, der folgenden String auslesen und in lesbar abspeichern soll:
Military Scan on 13:6:5 in tick 209
Ship Base Fleet 1 Fleet2 Fleet3
Phantom 1000 1000 2000 0
Apparition 0 200 0 0
Banshee 0 0 0 1000
Spirit 0 0 500 0
Wraith 0 500 0 0
Shadow 0 0 0 0
Nightmare 0 0 0 0
Ghost 0 0 0 0
Spectre 0 0 0 0
Illusion 0 0 500 0
Vampyre 0 0 0 0
Haunt 0 0 0 0
Das Problem: Egal wie der String aussieht, preg_match_all findet immer nur 7 Treffer. In diesem Fall ist der letzte Treffer die Zeile welche mit Nightmare startet. Am Pattern dürfte es nicht liegen, da er die 7 Zeilen davor ja findet. Hat jemand eine Idee?
Danke im vorraus.
rampage
Ich arbeite z.Zt. an einem Parser, der folgenden String auslesen und in lesbar abspeichern soll:
Military Scan on 13:6:5 in tick 209
Ship Base Fleet 1 Fleet2 Fleet3
Phantom 1000 1000 2000 0
Apparition 0 200 0 0
Banshee 0 0 0 1000
Spirit 0 0 500 0
Wraith 0 500 0 0
Shadow 0 0 0 0
Nightmare 0 0 0 0
Ghost 0 0 0 0
Spectre 0 0 0 0
Illusion 0 0 500 0
Vampyre 0 0 0 0
Haunt 0 0 0 0
PHP-Code:
elseif (substr($parser[$n], 0, 16) == 'Military Scan on') {
$type = "12Military Scan";
$word = explode(" ", $parser[$n]);
$coords = explode(":", $word[3]);
$x = $coords[0]; $y = $coords[1]; $z = $coords[2]; $tick = $word[6];
if ($hide) { $text .= "<table><tr><th colspan='5'>Military Scan on X:X:X in tick $tick</th></tr>"; }
else { $text .= "<table><tr><th colspan='5'>Military Scan on $x:$y:$z in tick $tick</th></tr>"; }
$text .= "<tr><td>Ship</td><td>Base</td><td>Fleet 1</td><td>Fleet 2</td><td>Fleet 3</td></tr>";
$regex = "^([a-zA-Z]+(\s+[a-zA-Z]+)*)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)^";
preg_match_all($regex, $parser2, $treffer);
for($i=0;$i<sizeof($treffer);$i++)
{
$name = $treffer[1][$i];
$base = $treffer[3][$i];
$f1 = $treffer[4][$i];
$f2 = $treffer[5][$i];
$f3 = $treffer[6][$i];
$text .= "<tr><td>$name</td><td>$base</td><td>$f1</td><td>$f2</td><td>$f3</td></tr>";
}
$text .= "</table>";
}
Danke im vorraus.
rampage
Kommentar