Textarea Wort für Wort in ein Array
kEv*
- php
Hallo liebe SELFHTMLer,
folgendes Problem plagt mich mit Ansatzlosigkeit.
Via Copy & Paste wird der Inhalt einer Seite von einem Browsergame in ein Textarea eingefügt.
In dieser Text befinden sich wahlos an diversen Stellen verstreut nun für mich wichtige Informationen die ich mir in Variablen (Array) usw. speichern möchte und zur weiteren Datenverarbeitung benutzen möchte.
Nun fehlt mir aber absolut der Ansatz.
Informationen sehen in der Regel ungefähr so aus:
....
Hauptplanet 21:157:21
Name Ratte1977
Cash: 23.666.333.222
Torplanet: 21:1:2
1 Bugamoni 21:157:1
2 Gustavo 21:157:2
3 23:11:22
usw.
...
Nun wärem im. o.g. Beispiel die Information des Hauptplaneten(21 157 21), Name (Ratte1977), Torplanet (21 1 2)und die Einzelplaneten(21 157 1, 21 157 2, 23 11 22) sehr wichtig.
Wie kann und sollte ich herangehen um mir diese Informationen zu speichern?
Erste Überlegung wäre solange Informationen zu sammeln bis ich keine CR&LF mehr finde.
Nur dann scheitert es schon. Ich bin wie gesagt absolut ansatzlos.
Bitte um eure Ideen und Hilfe.
LG
kev1n
Ahoi kEv*,
Via Copy & Paste wird der Inhalt einer Seite von einem Browsergame in ein Textarea eingefügt.
wenn ich aufgrund der hitze nicht komplett falsch liege wird der inhalt der Textarea als String übermittelt.
Ansatz: String-Funktionen
Wie kann und sollte ich herangehen um mir diese Informationen zu speichern?
Nochn kleiner ansatz:
$hauptplanetPos = strpos ($textareaOrig, "Hauptplanet");
$substringHauptplanet = substr ($textareaOrig, $hauptplanetPos);
MfG
Ahoi nochmal,
mit explode() könntest du auch auf die einzelnen Zeilen zugreifen, also als
delimiter "\r", "\n" oder "\r\n" wählen. das hängt aber vom
Betriebssystem ab, bin mir nicht 100%ig sicher was da am zuverlässigsten
ist. die einzelnen Arrayelemente kannst du dann mit entsprechenden
Array Funktionen durchsuchen.
MfG
Hi,
Hauptplanet 21:157:21
Name Ratte1977
Cash: 23.666.333.222
Torplanet: 21:1:21 Bugamoni 21:157:1
2 Gustavo 21:157:2
3 23:11:22usw.
...Nun wärem im. o.g. Beispiel die Information des Hauptplaneten(21 157 21), Name (Ratte1977), Torplanet (21 1 2)und die Einzelplaneten(21 157 1, 21 157 2, 23 11 22) sehr wichtig.
Steht jede Information in einer eigenen Zeile?
Dann koenntest du den String (inhalt der Textarea) bei Zeilenumbruch aufsplitten und die einzelnen Zeilen in ein Array speichern. Dieses durchlauefst du jetzt in einer Schleife und schaust bei jedem Element den ersten Teilstring bis zum ersten whitespace an. Wenn das einer der Begriffe ist, die du suchst, musst du den Rest der Zeile (am besten in ein assotiatives array?) abspeichern.
mfG,
steckl
Hallo liebe SELFHTMLer,
Steht jede Information in einer eigenen Zeile?
Generell stehen alle wichtigen Informatione immer in einer Zeile.
manchmal die Information ganz allein, manchmal nun aber wieder in einem _Satz_, welcher auseinander genommen werden muss.
Erschwerend kommt hinzu das das Format des kopierten Textes nicht immer gleich ist.
Ich hatte mal im Visual Basic eine routine für ein gleichbleibendes Format, wo ich mir die einzelnen Wörter in ein Array geschubst habe und dann Zeile für Zeile mit einem CASE SELECT gearbeitet habe.
Das scheint unter php aber leider nicht ganz so zu funktionieren.
Möglicherweise denke ich auch schon wieder viel zu kompliziert.
LG
kev1n
Hallo liebe SELFHTMLer,
Steht jede Information in einer eigenen Zeile?
Generell stehen alle wichtigen Informatione immer in einer Zeile.
manchmal die Information ganz allein, manchmal nun aber wieder in einem _Satz_, welcher auseinander genommen werden muss.
Auch mitten im Satz, oder stehen die gesuchten Informationen immer am Ende der Zeile?
Erschwerend kommt hinzu das das Format des kopierten Textes nicht immer gleich ist.
Und das Format der Inhalte, die Du suchst, haben die immer denselben Aufbau? Wenn zutreffend, dann probiere es mit meinem Vorschlag.
Ich hatte mal im Visual Basic eine routine für ein gleichbleibendes Format, wo ich mir die einzelnen Wörter in ein Array geschubst habe und dann Zeile für Zeile mit einem CASE SELECT gearbeitet habe.
Das scheint unter php aber leider nicht ganz so zu funktionieren.
Möglicherweise denke ich auch schon wieder viel zu kompliziert.
Mit einem regex und preg_match_all kannst Du beliebige Inhalte suchen. Warum willst Du alle "Wörter" in der Ergebnismenge haben?
Hallo liebe SELFHTMLer,
Auch mitten im Satz, oder stehen die gesuchten Informationen immer am Ende der Zeile?
Leider auch mitten im Satz.
Mit einem regex und preg_match_all kannst Du beliebige Inhalte suchen. Warum willst Du alle "Wörter" in der Ergebnismenge haben?
Ich will nicht alle Wörter haben. Ein genereller Teil ist immer gleich.
Ich poste sobald ich zu Hause bin mal 2 unterschiedliche _Profile_ aus dem Onlinespiel.
Dann sollte ersichtlich werden welche Daten da _dynamisch_ sind und nicht immer die selbe Struktur haben und welche nicht.
Ich kann es aus dem Strehgreif leider nicht sagen.
LG
kev1n
Ahoi kEv*,
Ich will nicht alle Wörter haben. Ein genereller Teil ist immer gleich.
das nötigste wurde schon gesagt, sowohl von mir als auch anderen.
ein explode() über die Zeilenumbrüche machen.
in einer for-Schleife alle Zeilen durchgehen und dort nach den
entsprechenden Schlüsselwörtern mit einer der gennanten funktion
suchen.
Wenn gefunden entsprechend in einem neuen Array speichern, oder
dafür vorgesehen Variablen.
Das ganze nach gedünken für die ausgabe formatieren und ausgeben.
dies funktioniert nur dann nicht wenn mehrere schlüsselwörter (z.B.
Hauptplanet) in einer zeile stehen können.dann musst du das ganze
noch etwas erweitern.
MfG
Ahoi kEv*,
Ich will nicht alle Wörter haben. Ein genereller Teil ist immer gleich.
das nötigste wurde schon gesagt, sowohl von mir als auch anderen.
ein explode() über die Zeilenumbrüche machen.
in einer for-Schleife alle Zeilen durchgehen und dort nach den
entsprechenden Schlüsselwörtern mit einer der gennanten funktion
suchen.
Das ist unnötiger Aufwand, und, wenn bei Einzelplaneten keine Schlüsselwörter vorkommen müssen, auch gar nicht so möglich. Für diese Zeilen müßte wieder anders gegengeprüft werden. Was nach bisheriger Informationslage gleichbleibend ist, ist der Aufbau der Inhalte, nach denen gesucht wird. Deswegen ist es am bequemsten, mit einem RegEx danach zu suchen und die Fundstellen in einem Array abzulegen. Dabei wird der RegEx auf den Ausgangsstring angewendet, und das Ergebnis ist das fertige Ergebnisarray. Den String in einzelne Zeilen splitten und in einem Hilfsarray ablegen ist unnötiger Aufwand. Für ein solches Hilfsarray verschiedene Suchkriterien zu schreiben ist ebenfalls aufwendiger als ein einfacher RegEx.
Ansonsten bliebe abzuwarten, was noch an weiteren Infos nachgereicht wird, um über eine endgültige Methode zu entscheiden.
- Das ganze nach gedünken für die ausgabe formatieren und ausgeben.
Gedünken?
Nachvollziehbar ist das Format ja nicht gerade. Wie es aussieht, bist Du außer beim Namen immer an Zahlenwerten interessiert, die die einzelnen Bestandteile mit ":" trennen. Also kannst Du mit preg_match_all alle Werte, die einem Aufbau wie 21:157:21 folgen, in einem Array sammeln. Das erste Element ist dann der Hauptplanet, das zweite der Torplanet, und die folgenden sind die Einzelplaneten. Willst Du im Ergebnisarray die ":" durch ein Leerzeichen ersetzen, kannst Du das mit str_replace noch anschließend tun. Den Namen suchst Du dann noch über Stringfunktionen oder einen weiteren regulären Ausdruck mit einem Lookbehind nach der Zeichenkette "Name " (dann reicht aber preg_match).
Hallo liebe SELFHTMLer,
ich poste mal 2 komplette Profile aus dem Browserspiel:
Profil 1:
Planet 17:35:23 -
(Punkte: 1134)
(Cash: 41.076.660)
05:11:00
Eisen Titan Wasser Wasserstoff Nahrung Einwohner
3.569.664 2.255.740 2.175.900 2.132.958 2.014.176 102.000
Spielerinformationen
f34rless
Name f34rless
Rasse Händler
Handelsvereinigung HDR
Hauptplanet rap1d (21:157:21) in Universum 1
Tor in Universum 2: (26:256:14)
Cash 41.076.660
Planeten 71
Punkte aller Planeten 107.652
Forschungspunkte 23.905
Punkte gesamt 131.557
Highscoreplatz 2.069
Kampferfahrung 198.425
Heldenpunkte 54.090
Nummer Koordinaten Name Punkte
1 1 5:455:1 921
2 1 5:455:2 1108
3 1 5:455:3 958
4 1 5:455:4 kev1n 1910
5 1 5:455:5 1152
6 1 17:35:23 1134
7 1 17:35:24 1279
8 1 17:35:25 1150
9 1 17:35:26 1217
10 1 17:35:27 1236
11 1 17:35:28 1258
12 1 17:35:29 1357
13 1 17:35:30 1228
14 1 17:35:31 1394
15 1 17:35:32 1164
16 1 17:35:33 1128
17 1 18:29:13 Chekalion 26
18 1 18:110:3 1696
19 1 18:110:4 1753
20 1 18:110:5 1641
21 1 21:57:2 1819
22 1 21:57:3 1879
23 1 21:57:4 1598
24 1 21:57:5 1550
25 1 21:57:6 1373
26 1 21:57:7 1528
27 1 21:57:8 1474
28 1 21:57:9 1750
29 1 21:57:10 1775
30 1 21:57:11 1697
31 1 21:57:12 1766
32 1 21:57:13 1588
33 1 21:57:14 1519
34 1 21:57:15 1836
35 1 21:152:14 1879
36 1 21:157:1 1680
37 1 21:157:2 1881
38 1 21:157:3 1676
39 1 21:157:4 2143
40 1 21:157:5 1657
41 1 21:157:6 1832
42 1 21:157:7 1693
43 1 21:157:8 1883
44 1 21:157:9 1892
45 1 21:157:10 1621
46 1 21:157:11 1923
47 1 21:157:12 1686
48 1 21:157:13 1666
49 1 21:157:14 1658
50 1 21:157:15 1903
51 1 21:157:16 1823
52 1 21:157:17 1891
53 1 21:157:18 1922
54 1 21:157:19 1920
55 1 21:157:20 1718
56 1 21:157:21 rap1d 1709
57 1 21:157:22 1702
58 1 21:157:23 1700
59 1 21:157:24 1669
60 1 21:163:33 426
61 1 21:173:24 126
62 1 21:221:2 1616
63 1 21:221:3 1507
64 1 21:221:4 1537
65 1 21:221:5 1630
66 1 21:221:15 1637
67 1 21:221:16 1526
68 1 21:221:17 1468
69 1 21:221:18 1599
70 1 22:157:31 110
Nachricht verfassen Cash überweisen zur Kontaktliste hinzufügen
Profil 2:
Planet 17:35:23 -
(Punkte: 1134)
(Cash: 41.076.660)
05:11:58
Eisen Titan Wasser Wasserstoff Nahrung Einwohner
3.569.664 2.255.740 2.175.900 2.132.958 2.014.176 102.000
Spielerinformationen
Ratte1977
Name Ratte1977
Rasse Pirat
Syndikat NLF
Hauptplanet Odin (14:264:2) in Universum 1
Tor in Universum 2: Gutulon (26:482:43)
Cash 99.463.530
Planeten 99
Punkte aller Planeten 180.247
Forschungspunkte 39.765
Punkte gesamt 220.012
Highscoreplatz 748
Kampferfahrung 42.193.331
Kriminalität 26.013.969
Nummer Koordinaten Name Punkte
1 1 12:32:7 NLF01 2535
2 1 12:32:11 NLF02 2240
3 1 12:32:12 NLF03 2226
4 1 12:32:26 NLF04 2523
5 1 13:118:12 NLF05 15560
6 fusioniert mit 13:118:12 0
7 fusioniert mit 13:118:12 0
8 fusioniert mit 13:118:12 0
9 fusioniert mit 13:118:12 0
10 fusioniert mit 13:118:12 0
11 fusioniert mit 13:118:12 0
12 1 13:333:4 NLF Land 1813
13 1 13:334:1 NLF07 2469
14 1 13:334:2 NLF wie ... 2449
15 1 13:334:3 NLF 2432
16 1 13:334:8 NLF08 2449
17 1 13:405:1 NLF09 2354
18 1 14:2:4 NLF 5759
19 fusioniert mit 14:2:4 0
20 fusioniert mit 14:2:4 0
21 1 14:3:1 NLF 1593
22 1 14:3:2 NLF12 2518
23 1 14:3:13 NLF13 2447
24 1 14:64:6 NLF14 2220
25 1 14:143:18 NLF15 1839
26 1 14:196:32 NLF 2298
27 1 14:264:1 Walhalla 1912
28 1 14:264:2 Odin 24192
29 fusioniert mit 14:264:2 0
30 fusioniert mit 14:264:2 0
31 fusioniert mit 14:264:2 0
32 fusioniert mit 14:264:2 0
33 fusioniert mit 14:264:2 0
34 fusioniert mit 14:264:2 0
35 fusioniert mit 14:264:2 0
36 fusioniert mit 14:264:2 0
37 fusioniert mit 14:264:2 0
38 fusioniert mit 14:264:2 0
39 fusioniert mit 14:264:2 0
40 fusioniert mit 14:264:2 0
41 1 14:264:15 und noch nix 20614
42 fusioniert mit 14:264:15 0
43 fusioniert mit 14:264:15 0
44 fusioniert mit 14:264:15 0
45 fusioniert mit 14:264:15 0
46 fusioniert mit 14:264:15 0
47 fusioniert mit 14:264:15 0
48 fusioniert mit 14:264:15 0
49 fusioniert mit 14:264:15 0
50 fusioniert mit 14:264:15 0
51 1 14:307:24 132
52 1 14:370:1 NLF 381
53 1 14:370:2 NLF 385
54 1 14:370:3 NLF19 2275
55 1 14:370:4 NLF43 2352
56 1 14:370:5 NLF20 2040
57 1 14:370:6 NLF21 2177
58 1 14:372:34 NLF22 2434
59 1 14:372:35 NLF23 2365
60 1 14:372:36 NLF24 2470
61 1 14:372:42 2204
62 1 14:372:43 2455
63 1 15:405:5 NLF25 1893
64 1 15:405:6 NLF26 1859
65 1 15:405:7 NLF27 2263
66 1 15:405:8 NLF28 2131
67 1 15:405:10 NLF29 2153
68 1 16:144:7 NLF 2221
69 1 16:144:22 NLF 2623
70 1 16:205:32 NLF30 2297
71 1 16:209:4 NLF31 2103
72 1 16:310:46 NLF44 1570
73 1 16:410:23 NLF45 2428
74 1 17:88:31 Kamele 354
75 1 18:109:11 NLF 647
76 1 18:259:6 NLF 2343
77 1 18:259:7 NLF 2310
78 1 18:290:15 wurm 12
79 1 19:30:7 36
80 1 19:371:6 NLF 1765
81 1 20:70:26 485
82 1 20:380:3 Koloson 259
83 1 21:67:1 NLF Land 1851
84 1 21:71:6 NLF 11853
85 fusioniert mit 21:71:6 0
86 fusioniert mit 21:71:6 0
87 fusioniert mit 21:71:6 0
88 fusioniert mit 21:71:6 0
89 fusioniert mit 21:71:6 0
90 1 21:74:1 NLF Aktion Joe 2086
91 1 21:469:11 Made 28
92 1 22:478:18 NLF Land 64
93 1 24:467:10 Schweine 28
94 1 24:480:37 vogeldreck^^ GH 380
95 1 24:492:16 Ferkel 49
96 2 26:482:43 Gutulon 1599
Nachricht verfassen Cash überweisen zur Kontaktliste hinzufügen
--------------------------------------------------------------------
Was an Daten für mich wichtig ist sind eben der Kopf, also Name usw.
nd die Planeten und welche _fusioniert_ haben.
Nummer Koordinaten Name Punkte
12:32:7
12:32:11
12:32:12
12:32:26
...
LG
kev1n
Was an Daten für mich wichtig ist sind eben der Kopf, also Name usw.
nd die Planeten und welche _fusioniert_ haben.Nummer Koordinaten Name Punkte
12:32:7
12:32:11
12:32:12
12:32:26...
LG
kev1n
Bitte markier mal, was Du ganz genau extrahieren willst. Ich kann mir nicht vorstellen, was diese Werte überhaupt bedeuten.
Ahoi kEv*,
nd die Planeten und welche _fusioniert_ haben.
was bedeutet fusioniert und wie sollen die behandelt werden?!?
MfG