Darillian: Bestimmte Daten aus einem Eingabefeld einlesen

Hallo,

ich zerbreche mir seit längerem den Kopf darüber, wie ich ein Eingabefeld realisieren kann, welches bei vielen Browsergame-Fanseiten verwendet wird:
Ich möchte ein einfaches Eingabefeld haben, ggf. mit ein paar DropDown-Menüs darüber (die kann ich selber realisieren), in welches man per copy&paste quasi den gesamten Text einer Seite in dieses Eingabefeld zu kopieren und dann nur bestimmte Werte in eine mySQL-Tabelle einzutragen. Nur weiß ich leider nicht, wie ich beim Auslesen bestimmte Sachen ignorieren lasse, andere aber hineinlese. Ums mal klarer auszudrücken:
Ich möchte mich einfach in das Browsergame einloggen, in meine Spielerstatistik reingehen und dort per Strg+A, Strg+C und Strg+V die komplette Seite als Text rauszuholen (ist einfach recht komfortabel), aber dann z.B. links die Navileiste nicht in die DB einzutragen, dafür aber z.B. das Level meine Schiffswerft oder die Anzahl meiner Truppen.

Hoffentlich wurde wenigstens ein paar von euch klar, was ich meine ;)

Danke im Vorraus
Darillian

  1. Hi,

    nachdem ich das jetzt drei Mal gelesen habe ist mir glaube ich zumindest klar was du willst. Das ändert nichts an der Tatsache, dass du dir damit wohl einen ziemlichen Brocken vornimmst. Im Prinzip läuft es auf auf eine Menge String-Frickelei raus, also Vorkommen eines Wertes suchen, mit Substring rausschneiden etc. Was du konkret tun musst hängt stark von der Struktur des kopierten Textes ab. Frage 1, kopierst du Quelltext (einfacher) oder reinen Inhalt (fast unmöglich)? Frage 2, wenn Quelltext, sind diese Passagen die dich da interessieren irgendwie besonders kenntlich gemacht (IDs o.ä.)?

    Falls du nach reinem Inhalt suchst:
    Ihre Schiffe Fighter 223Bomber 210
    Sag mir mal die Stufe meiner Fighter! Sind es 223? Sind es "Fighter 2" und ich habe 23 davon? Das hängt extrem davon ab wie du den Inhalt bekommen kannst, aber unstrukturierte Informationen deartige auszulesen ist _extrem_ schwer.

    MfG
    Rouven

    --
    -------------------
    ie:| fl:| br:> va:| ls:& fo:) rl:( n4:{ ss:) de:] js:| ch:? mo:} zu:|
    1. Jo, genau den Inhal möchte ich durchsuchen :)
      Ums mal an dem Browsergame festzumachen:
      Ich möchte auf folgenden Text, der per Ctrl+A, Ctrl+C und Ctrl+V ins Eingabefeld geholt wurde, nur die "relevanten" Daten unter "Gebäude" herausholen:

      ----------------------------------------------------------------------
      Star Trek: Galaxy Conquest

      home   game   stats   faq   forum   chat   impressum   spenden
      Kommando

      kolonie
        Senat
        Gebäude
        Forschungszentrum
        Raumhafen
        Schiffswerft
        Schiffstemplates
        Kaserne
        Minen
        Handelsstation

      kommando
        Planeten
        Flotten
        Taktik
        Diplomatie
        Allianz

      datenbank
        Allgemein
        Logbuch
        Nachrichten

      allgemein
        Portal
        Rangliste
        Einstellungen
        Hilfe

      Nächster Tick:
      0:02:57

      Sittingaccounts:

      Senat:

      Statistiken für Omikron Kappa-4

      Gebäude: Kl. Orbitalgeschütz (Stufe 14) 3:47:56
      Forschung: nichts
      Kaserne: aktiv (Rem. Truppen) 0:05:56
      Schiffswerft: Koloschiff 0:20:56

      Allgemein:

      Namen ändern:
      Koordinaten: Q2:G3:3
      Max. Ressourcen: 330000
      Freie Einheiten: 11890/12200
      Freie Arbeiter: 10762/12200
      Kl. Orbit. Geschütze: 13x 150 - 200
      Orbit. Geschütze: 0x 50 - 250
      Punkte: 407/677
      Klasse:
      D (Klasse-D-Welt)
      Leben:
      aufwändig, aber möglich
      Rohstoffe:
      mittlere Vorkommen aller wichtigen Rohstoffe
      Beschreibung:
      Planeten dieser Klasse gelten meist nur ...
      Beispiele:
      Ceres (Asteroid im Sol-System)

      Gebäude:
      Senat (9)
      Metallminen (9)
      Mineralienminen (9)
      Latinumraffinerie (9)
      Kraftwerk (9)
      Kaserne (9)
      Raumhafen (9)
      Schiffswerft (9)
      Forschungszentrum (9)
      Kl. Orbitalgeschütz (13)
      Orbitalgeschütz (0)
      Handelsstation (9)
      Silos (9)

      Truppen:
       Centurion (87)
       Rem. Truppen (20)
       Tal Shiar (0)
       Commander (0)
       Techniker (14)
       Mediziner (5)
       Technologien:
      Klimaneuordnung (4)
      verb. Sklavenhaltung (6)
      Orbitalabwehr (4)
      Automatisierung (4)
      Sklavenmotivation (6)

      Komponenten:
      Unterbringung  (0%)
      Maschinenraum  (75%)
      Primäre Waf..  (57%)
      Sekundäre W..  (40%)
      Hülle / Sch..  (60%)
      Computersys..  (80%)
      Medizin. Ei..  (60%)
      Antrieb  (75%)
      Wissenschaf..  (100%)
      Experimente..  (0%)

      Notizblock:  Ausblenden
      Kappa-1: 2x Griffin1 Kappa-2: 2x Raptor Kappa-3: 2x Talon & 200 lv2 als Sicherheitstruppen bzw. zum Verkauf Kappa-4: 2x Talon & 200 lv2 als Sicherheitstruppen bzw. zum Verkauf Kappa-5: 200 lv3 als Sicherheitstruppen bzw. zum Verkauf Kappa-6: 2x Talon & 200 Techis & 200 Meds zum Verkauf Kappa-7: 200 Meds & 200 Techis & 200 lv2 Sicherheitstruppen bzw. zum Verkauf Kappa-8: 200 Com & 200 lv3 Sicherheitstruppen bzw. Verkauf 8019

      Übersicht

      Hi Darillian,
      Allianz: Rest in Pieces
      Punkte: 4182
      Platz: 154

      Omikron Kappa-4:

      Klasse: D
      Position: Q2:G3:3
      Punkte: 407/677

      8664/330k
       64973 / 330k
       10332 / 330k
       1438 (+2.3) / 12200

      87
       20
       0
       0
       14
       5

      234 / 174

      Stat. Flotten:
      copyright

      0.0401 secs  -  16 queries
      based on stgc.de
      ----------------------------------------------------------------------

      Und alle anderen Informationen beim Übertragen in eine DB einfach ausblenden. Nur wie mache ich das? Gibts irgendwas mit "ignore" oder so? Denn manche Sachen, die ich "wegschneiden" möchte, sind statisch, weshalb ich sie direkt im Sourcecode ignorieren lassen kann. Die Frage ist aber: Wie mache ich das? ;)

      Gruß
      Darillian

      1. Hmh,

        also unter der Voraussetzung, dass das wirklich jedes Mal GENAU SO aussieht:
        Nimm JavaScript, PHP oder was dir gerade zur Filterung genehm ist:

        1. Suche nach "Gebäude:" und schneide den String beginnend ab da
        2. Suche nach "Truppen:" und schneide den String bis hier
          (du hast jetzt noch genau die Gebäudezeilen und eine Leerzeile)
        3. In PHP würde sich jetzt ein explode am "\n" anbieten, in JavaScript vielleicht analog ein [split).
          (Nun hast du im Array jede Gebäudezeile (+die Leerzeile) als einzelnen Eintrag)
        4. Nun könntest du jeden Eintrag am Leerzeichen splitten, im zweiten Teil die Klammern durch ein replace o.ä. entfernen. Danach hast du jeweils in Teil 1 den Namen des Gebäudes und in Teil 2 seine Stufe.

        3+4 geht evtl. auch effizienter...

        Nun ja, das Konzept kippt sobald sich auch nur irgendwie das Format des Textes ändert und du machst das Spiel individuell für jeden Block und jeden Text.

        MfG
        Rouven

        --
        -------------------
        ie:| fl:| br:> va:| ls:& fo:) rl:( n4:{ ss:) de:](http://de.selfhtml.org/javascript/objekte/string.htm#split) js:| ch:? mo:} zu:|