Empfehlung zum auslesen der Textarea

Poisoned

Grünschnabel
Hallo,

ich wollte gerne für ein Online Browser Spiel ein Berichte Dump auswerten und in eine MySQL Datenbank speichern...

Dabei sollten aber nur bestimmte Dinge aus dem Bericht gelesen werden... und in diesem Berichten schwanken einige Angaben so dass es schwer wird diese auszulesen und mir fällt als Anfänger das nich ganz leicht...

Hier mal ein Beispiel für einen Dumpbericht:
Datum : 18:32 30-11-2004
Betreff : Angriff auf 123456

Nachricht :
Ihr Kontingent hat die Verteidigung der Basis bei 123456 durchbrochen.
Ihr Kontingent stieß auf keine nennenswerte Gegenwehr.
Ihre Einheiten haben vorsichtig und überlegt angegriffen.


Angreifer:
5 Nomic
15 Merger
KVP-Bonus 200%
Angriffswert: 2550
Verteidigungswert: 5475
daraus resultierender Angriffswert: 5287.5

Verluste:keine
gewonnenene Battlepoints: 0 (geklaut: 0)
Ihr Kontigent war nicht stark genug, um BPs zu klauen

Verteidiger:
Verteidigungszentrum Lvl. 3
KVP-Bonus 40%
Angriffswert: 21
Verteidigungswert: 42
daraus resultierender Verteidigungswert: 52.5

Verluste: alles

Plünderung:
max. Kapazität: 9400
253 Eisen
474 Titan
285 Öl
239 Uran
77 Gold
insgesamt geplündert: 1328 Einheiten



---------------------------------------------------------------


Datum : 23:30 30-11-2004
Betreff : Angriff auf 123456

Nachricht :
Ihr Kontingent hat die Verteidigung der Basis bei 123456 durchbrochen.
Ihr Kontingent stieß auf keine nennenswerte Gegenwehr.
Ihre Einheiten haben vorsichtig und überlegt angegriffen.


Angreifer:
5 Nomic
15 Merger
KVP-Bonus 200%
Angriffswert: 2550
Verteidigungswert: 5475
daraus resultierender Angriffswert: 5287.5

Verluste:keine
gewonnenene Battlepoints: 0 (geklaut: 0)
Ihr Kontigent war nicht stark genug, um BPs zu klauen

Verteidiger:
Verteidigungszentrum Lvl. 2
KVP-Bonus 60%
Angriffswert: 16
Verteidigungswert: 32
daraus resultierender Verteidigungswert: 40

Verluste: alles

Plünderung:
max. Kapazität: 9400
239 Eisen
241 Titan
106 Öl
78 Uran
15 Gold
insgesamt geplündert: 679 Einheiten
---------------------------------------------------------------
Also das auslesen der Koordinate "123456" habe ich mit hilfe von

strstr und str_replace hinbekommen...

Nur das auslesen von den Werten
Plünderung:
max. Kapazität: 9400
239 Eisen
241 Titan
106 Öl
78 Uran
15 Gold
insgesamt geplündert: 679 Einheiten
fällt mir schwer diese herauszu ziehen... den es müssen nicht zwangsweise alle Arten von Ressourcen dabei sein... und noch längst nich immer im 3 stelligen Bereich wie hier im Beispiel....

heißt das ganze ist sehr variable... meine Frage ist nur wie kann man das lösen das ich den Wert vom Eisen also hier 239 auslese... bzw. die anderen...

man könnte dies zwar auch mit
strstr und str_replace lösen müsste aber dann viele if abfragen ob Eisen und Titan oder Eisen und Öl vorhanden ist abfragen...

nun ist meine Frage ob jemand einer bessere Lösung dafür hat...

Ich würde mich freuen...
MfG
Poisoned
 
Is doch einfach(werd dir aber keine Lösung geben sondern nur nen Weg)

Guck dir mal php.net/preg_match bzw. preg_grep an.
 
Noch ein kleiner Tipp!

Wenn dein Text immer so aussieht, nur die Werte verschieden sind

Plünderung:
max. Kapazität: 9400
239 Eisen
241 Titan
106 Öl
78 Uran
15 Gold
insgesamt geplündert: 679 Einheiten


ist am besten du schneidest das ganze ab. mit explode kannst das einfach realisieren.

Nimm einfach das Wort Plünderung: und das Wort Einheiten. Schon kannst du dich auf das wesentliche konzentrieren.

Angenommen der BEricht steht in der Variable $text

PHP:
$text2=eplode('Plünderung:',$text);
$text2=explode('Einheiten',$text2[1]);
$text2 = $text2[0];
Schon haste das Raus was du garnicht brauchst!

Grüsse
 
Lukasz hat gesagt.:
Noch ein kleiner Tipp!

Wenn dein Text immer so aussieht, nur die Werte verschieden sind

Plünderung:
max. Kapazität: 9400
239 Eisen
241 Titan
106 Öl
78 Uran
15 Gold
insgesamt geplündert: 679 Einheiten


ist am besten du schneidest das ganze ab. mit explode kannst das einfach realisieren.

Nimm einfach das Wort Plünderung: und das Wort Einheiten. Schon kannst du dich auf das wesentliche konzentrieren.

Angenommen der BEricht steht in der Variable $text

PHP:
  $text2=eplode('Plünderung:',$text);
  $text2=explode('Einheiten',$text2[1]);
  $text2 = $text2[0];
Schon haste das Raus was du garnicht brauchst!

Grüsse
sorry das war nicht gefragt ich schrieb ja das dies sehr variable ist sonst würe ich doch garnicht fragen.

nebenbei würde deine funktion den ganzen rest des gesuchten textes mitnehmen.

eine solche habe ich auch schon wie geschreiben.
PHP:
  function schnibbel($bericht,$start,$end)
  {
  $anfang = strstr($bericht,$start);
  $mittel = str_replace($start,"", $anfang);
  $ende = strstr($mittel, $end);
  $ergebnis = str_replace($ende,"",$mittel);
  return $ergebnis;
  }

danke sircaine ich werde mich damit mal näher beschaftigen.

aber weiteres problem ist die auswertung des wertes nach der max.Plünderung und den nächsten Ressourcen Element z.b. Eisen o.Ä..

Plünderung:
max. Kapazität: 9400
239 Eisen
das max.Kapazität unabhängig vom nächsten Element ist...

z.B. hier:

Plünderung:
max. Kapazität: 155
1 Eisen
154 Uran
 
hab nun auch das letzte problem gelöst... ein kleiner ausschnitt:

PHP:
   if (preg_match("/Eisen/i", $string))
    	{
    	$zwischen = schnibbel($string,"Kapazität:","Eisen");
    	$eisen = strstr($zwischen, "\n");
   	 ... usw.

danke nochmals an sircaine... ;)
 
Zurück