kEv*: Textarea Wort für Wort in ein Array

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

--
SELFCODE:
sh:( fo:| ch:? rl:° br:^ ie:{ mo:| va:) de:] zu:) ss:| ls:[ js:|
---
  1. 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

    1. 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

  2. Hi,

    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.

    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

    1. 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

      --
      SELFCODE:
      sh:( fo:| ch:? rl:° br:^ ie:{ mo:| va:) de:] zu:) ss:| ls:[ js:|
      ---
      1. 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?

        1. 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

          --
          SELFCODE:
          sh:( fo:| ch:? rl:° br:^ ie:{ mo:| va:) de:] zu:) ss:| ls:[ js:|
          ---
          1. 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

            1. 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?

  3. 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).

  4. 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

    --
    SELFCODE:
    sh:( fo:| ch:? rl:° br:^ ie:{ mo:| va:) de:] zu:) ss:| ls:[ js:|
    ---
    1. 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.

    2. Ahoi kEv*,

      nd die Planeten und welche _fusioniert_ haben.

      was bedeutet fusioniert und wie sollen die behandelt werden?!?

      MfG