Formularinhallt an Formular schicken und splitten

Der kommt von Monstergame , Onlinespiel RedMoon Studios , den bekommt mann automatisch wenn mann einen Angegriffen hat , als Nachricht in sein ACC Postfach.
Den muß mann sich also Raus kopieren und dann in das von mir gewünschte Textfeld einfügen.

ich stelle mir das so vor das das Formular oben im <tr> angezeigt wird und Klasse wärs wenn drunter die möglichkeit bestünde durch einfügen des Kampfberichtes die Felder gefüllt werden.
Ich könnte nochmal den Kampfbericht posten und detailiert mit verschiedenen Farben darstellen was in dem Text welcher Wert ist.


EDIT: Der Kampfbericht wenn er eingefügt wird , kann dann natürlich auch in die Datenbank , Sagen wir mal in die Tabelle "kampfbr" , aber das ist ja kein problem.

Deinen ersten schritt hab ich schon geändert in der Eintrag_neu_action.php und auch in der Ändern_action.php
 
Zuletzt bearbeitet:
Ok, wenn der Kampfbericht immer gleich ist würde das schon gehen.
Da müsste allerdings ein RegExp-Experte ran, was ich absolut nicht bin :)
 
Oh schade , dann heißt es wohl warten , ich danke dir für die Zeit die du für mich hattest , war echt lieb von dir.

Könntest du mir eventuell bei meinem Timestamp Problem helfen ? Andres Thema andere Seite, die Frage besteht schon . :)
 
So, hier ein Beispielcode für Datum, Zeit und Punkte:

PHP:
$text = "Kampfbericht im Detail am 30.03.2008 um 07:44:39 Uhr 
Name: Trefferpunkte: Lebensenergie:
Vampir [VoN] ~ Arachno ~ 175.75 9712.03
Werwolf [FL]vgw77 58.06 1
Sieger: [VoN] ~ Arachno ~
Sieger: [VoN] ~ Arachno ~ hat 120 erbeutet! Vampir [VoN] ~ Arachno ~ erhielt 0 und Werwolf [FL]vgw77 erhielt 1 Erfahrungspunkt(e)! Werwolf [FL]vgw77 hat den Kampf verloren, da seine Lebensenergie unter 10 Punkte gefallen ist!";

//Datum rausfiltern
$a = explode("um", $text);
$a = explode(" am ", $a[0]);
$datum = trim($a[1]);

//Zeit rausfiltern
$a = explode("Uhr", $text);
$a = explode("um", $a[0]);
$a = explode(":", $a[1]);
$zeit = trim($a[0]).":".trim($a[1]);

//Punkte rausfiltern
$a = explode(" erbeutet", $text);
$a = explode(" hat ", $a[0]);
$punkte = trim($a[1]);


echo "Datum: ".$datum."<br>";
echo "Zeit: ".$zeit."<br>";
echo "Punkte: ".$punkte."<br>";

Die Funktion trim() schneidet eventuelle Leerzeichen am Anfang und Ende weg.

Du kannst dann die Variablen $zeit etc entweder in der Session speichern, wenn du eine verwendest, oder wenn du ein Formular verschickst, also es einen submit-Button gibt, dann kannst du zum Beispiel mit

PHP:
<input type="hidden" name="punkte" value="<?php echo $punkte ?>">

das ganze weiterschicken.

Dann fehlen natürlich noch die Namen... hast du vielleicht noch ein zweites Beispiel? Damit ich weiß, wie da gefiltert werden muss. Steht immer [VoN] und [FL] vor den Namen? Was sind die Zahlen dahinter? Einmal ist es ja eine IP, aber warum ist beim anderen eine kürzere Zahlenfolge? Wenn ich die Hinweise hätte, dann werde ich versuchen dir im Laufe des Tages auch dafür den Code zu basteln.
 
Ersteinmal ein dickes dankeschön.

Und dann zum Thema , Klar ist es mir möglich dir ein weiteres Kampfberichtsbeispiel hier einzufügen , kein Thema , ich werde es auch gleich mit verschiedenen Farben versehen wo dann ersichtlicher ist was , was ist. Da es sich hier um ein Tabellen Layout handelt, werden hier die Zahlen und Werte nicht wie im Tatsächlichen Kampfbericht unter dem jeweiligem Namen angezeigt , das macht das Erkennen der einzelnen Werte sehr schwer.

[VoN] und andere kürzel , gehören zum Namen und sind desswegen auch immer anders , oder teilweise Garnicht vorhanden , dies ist ein kürzel um den Clan dem mann angehört erkenntlich zu machen. Vom Angreifer der weiter unten Farblich hervorgehoben wird ist das kürzel nicht erwünnst was es sicher nicht einfach macht da dieses einmal dabei ist und einmal nicht. Vom Opfer jedoch schon , da dieser Eintrag als Link verwendet wird wenn dieser dann fehlen würde , würde der Link nicht funktionieren.
Ich werde jetzt mal mit einem | versuchen die einzelnen Spalten zu trennen damit es füpr andere auch leichter zu erkennen ist , also dieses | ist im Kampfbericht nicht enthallten :)

--------------------------------------------------------------------------------------------------
Kampfbericht Original
--------------------------------------------------------------------------------------------------
Kampfbericht im Detail am 03.04.2008 um 00:09:51 Uhr
Name: Trefferpunkte: Lebensenergie:
Vampir [VoN] ~ Arachno ~ 62.66 9389.37
Werwolf Prinz pie 0.00 1
Sieger: [VoN] ~ Arachno ~
Sieger: [VoN] ~ Arachno ~ hat 26 erbeutet! Vampir [VoN] ~ Arachno ~ erhielt 0 und Werwolf Prinz pie erhielt 1 Erfahrungspunkt(e)! Werwolf Prinz pie hat den Kampf verloren, da seine Lebensenergie unter 10 Punkte gefallen ist!
--------------------------------------------------------------------------------------------------


--------------------------------------------------------------------------------------------------
Kampfbericht in Deutlicher Form ( Das was ich Brauche )
--------------------------------------------------------------------------------------------------
Kampfbericht im Detail am 03.04.2008 um 00:09:51 Uhr
Name: | Trefferpunkte: | Lebensenergie:
Vampir [VoN] ~ Arachno ~ | 62.66 | 9389.37
Werwolf Prinz pie | 0.00 | 1
Sieger: [VoN] ~ Arachno ~

Sieger: [VoN] ~ Arachno ~ hat 26 erbeutet! Vampir [VoN] ~ Arachno ~ erhielt 0 und Werwolf Prinz pie erhielt 1 Erfahrungspunkt(e)! Werwolf Prinz pie hat den Kampf verloren, da seine Lebensenergie unter 10 Punkte gefallen ist!
--------------------------------------------------------------------------------------------------
Tag Monat Jahr
Stunde Minute
Angreifer
Opfer Übrige Lebensenergie Opfer
Beute
--------------------------------------------------------------------------------------------------

Im Formular sind die einzelnen Werte wie folgt benannt :
Lässt sich nirgends Filtern = Level
Opfer=Name
Lässt sich nirgends Filtern = IDnum ( ID nummer des Opfers )
Beute = Beute
Angreifer = erwischt
Übrige Lebensenergie Opfer = Energie
Tag = Tag
Monat = Monat
Jahr = Jahr
Stunde = Stunde
Minute = Minute

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

Ich hoffe ich hab jetzt nichts vergessen , wenn ich einen Fehler entdecke werd ichs Editieren.

Edit : der Formular inhallt "erwischt" = "Angreifer" ist immer ein Vampir
 
Zuletzt bearbeitet:
So, hier ein Versuch ;-)

PHP:
<?php
$text = "Kampfbericht im Detail am 30.03.2008 um 07:44:39 Uhr 
Name: Trefferpunkte: Lebensenergie:
Vampir [VoN] ~ Arachno ~ 175.75 9712.03
Werwolf [FL]vgw77 58.06 1
Sieger: [VoN] ~ Arachno ~
Sieger: [VoN] ~ Arachno ~ hat 120 erbeutet! Vampir [VoN] ~ Arachno ~ erhielt 0 und Werwolf [FL]vgw77 erhielt 1 Erfahrungspunkt(e)! Werwolf [FL]vgw77 hat den Kampf verloren, da seine Lebensenergie unter 10 Punkte gefallen ist!";

$a = explode("um", $text);
$a = explode(" am ", $a[0]);
//Gesamtdatum
$datum = trim($a[1]);
$a = explode(".", $datum);
//aufgeteilt in Tag, Monat, Jahr
$tag = $a[0];
$monat = $a[1];
$jahr = $a[2];

$a = explode("Uhr", $text);
$a = explode("um", $a[0]);
$a = explode(":", $a[1]);
//Gesamtzeit und aufgeteilt in Stunden und Minuten
$zeit = trim($a[0]).":".trim($a[1]);
$stunden = trim($a[0]);
$minuten = trim($a[1]);

$a = explode("erbeutet", $text);
$a = explode("hat", $a[0]);
//Beute
$punkte = trim($a[1]);

$a = explode("Sieger:", $text);
$a = explode("Lebensenergie:", $a[0]);
$a = preg_split("/\s+/", $a[1]);
$anz = count($a);
$anz = $anz -2;
//Restenergie des Opfers
$restenergie = $a[$anz];

$a = explode("erhielt", $text);
$b = explode("Vampir", $a[0]);
$anz = count($b);
$anz--;
//Angreifer
$angreifer = trim($b[$anz]);

$b = explode("[", $a[1]);
//Opfer
$opfer = "[".$b[1];

?>

Leider ist es schwer, da den Angreifer und das Opfer herauszufiltern. Wie man schonbei ~ Arachno ~ sieht, kann ein Name auch Leerzeichen enthalten. Und nach Zahlen kann man auch schlecht filtern, weil diese ja auch in den Namen auftauchen können. Wenn in dem unteren Teil des Texts die Reihenfolge Angreifer und Opfer stimmt (erfahrungspunkte), dann hoffe ich, dass dies eine zuverlässige Lösung ist. Da das Ganze ja, wie du sagtest, im tabellenlayout ankommt, kann es mit den Leerzeichen natürlcih auch mal anders sein als in meinem Test. Probiers am besten mal mit verschiedenen Kampfberichten aus (und wenn möglich, auch mal mit anderen Angreifer- und Opfernamen).
 
Hey cool danke dir vielemals Hammer mit dem Code von dir wird mir klar wie einfach das doch eigentlich ist , wenn mann weiß wie es geht , ich werde das am kommendem Wochenende mal Testen . Super Danke dir erstmal.
 
Funktioniert einwandfrei,
Jetzt hab ich aber immer noch ein klitzekleines Problemchen.
Ich habe in dem komplett Text auch die Angabe des Levels,
Was es sehr schwierig macht ist das dies 2 mal vorkommt und ich brauche aber nur eines der beiden.
Hier mal der Text:
Vampir [V-o-N] ~ Arachno ~ vs. Werwolf [JFF] FIRESTARTER_1939
Level: 96 Level: 86
Stärke: 164 (+73) Stärke: 163 (+13)

Die Rot markierte Zahl möchte ich rausfiltern , wenn ich es versuche bringt er mir immer die 96.

mein verwendeter code
PHP:
$a = explode("Stärke", $text); 
$a = explode("Level:", $a[0]); 
$Level = trim($a[1]);
Stärke und Level kommen 2 mal vor was sicherlich mein Problem ist.

Währe sehr dankbar wenn ich nochmal Hilfe bekomme.
 
Zurück