Datei Parsen und Filtern

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Datei Parsen und Filtern

    Hallo zusammen,

    ich habe mal wieder ein kleines Problemchen und brauche mal wieder einen Denkanstoß von euch.

    Ich habe folgende Datei und muss sie irgenwie Parsen.

    Code:
    SIMPLE_CHAT = "0"
    CHAT_LOCKED = "0"
    SHOW_DAMAGE = "1"
    REMOVE_CHAT_DELAY = "0"
    SHOW_NEWBIE_TIPS = "1"
    ItemBuffState = {
    }
    myProfile = {
    	["PvP Server"] = {
    		["Hoschi"] = {
    			["Note"] = "",
    			["Zone"] = "Orgrimmar",
    			["Group"] = "no",
    			["Class"] = "Shaman",
    			["RankIndex"] = 3,
    			["Level"] = 58,
    			["LastOnline"] = 9,
    			["Name"] = "Hoschi",
    			["Rank"] = "Member",
    		},
    		["Berni"] = {
    			["Note"] = "",
    			["Zone"] = "Stranglethorn Vale",
    			["Group"] = "no",
    			["Class"] = "Rogue",
    			["RankIndex"] = 4,
    			["Level"] = 46,
    			["LastOnline"] = 0,
    			["Name"] = "Berni",
    			["Rank"] = "Trial",
    		},
            },
    }
    Diese Datei enthält einen Extrakt aus einer Memberliste. Mit *["reaVen"]=* beginnen die Eigenschaften des Members.
    folgende Felder/Daten muss ich bekommen ["Level"] + ["LastOnline"]. Den Membernamen habe ich in einer eigenen Datenbank.

    Bisher lese ich die Datei Zeilenweise mit $zeilen = file('liste.txt'); ein und lass es durch eine for-Schleife laufen. Vor dieser Schleife mach ich eine Datenbankabfrage und erstelle mir einen Array mit allen Member-Namen.
    Nun mein Lieblingsgebiet wo ich immer wieder scheitere. RegExp

    Ich muss nun einen RegExp machen der mir $meine_members[$i] vergleicht mit ["Hoschi"] .
    Wenn ich das gefunden habe kann ich den Zähle um 6 erhöhen und die 2 folgenden Felder auslesen.

    Sehe ich das richtig? Oder gibt es mal wieder eine einfachere Weise an die Informationen zu kommen?

    Vielleicht mal wieder an die RegExp-Meister die den Ausdruck im Schlafbeten

    greetz
    reaVen
    Ein blue screen ist nicht immer was schlimmes... es hängt nur davon ab wo er zu sehen ist !
    www.d-creationz.de

  • #2
    ehm du hast keine Datenbank zur Verfügung ?
    [color=blue]MfG Payne_of_Death[/color]

    [color=red]Manual(s):[/color] <-| PHP | MySQL | SELFHTML |->
    [color=red]Merke:[/color]
    [color=blue]Du brauchst das Rad nicht neu erfinden ! [/color]<-ForumSuche rettet Leben-> || <-Schau in den Codeschnippsels->

    Murphy`s Importanst LAWS
    Jede Lösung bringt nur neue Probleme
    Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht.
    In jedem kleinen Problem steckt ein großes, das gern raus moechte.

    Kommentar


    • #3
      Doch habe ich.
      Nur das File kommt nicht aus einer Datenbank oder von meinem Server.
      Das File is aus einem Game und wird genau in diesem Format angeliefert. Ich muss nehmen was kommt.

      Oder wie meintest du das mit der DB?
      Ein blue screen ist nicht immer was schlimmes... es hängt nur davon ab wo er zu sehen ist !
      www.d-creationz.de

      Kommentar


      • #4
        Original geschrieben von reaVen
        Doch habe ich.
        Nur das File kommt nicht aus einer Datenbank oder von meinem Server.
        Das File is aus einem Game und wird genau in diesem Format angeliefert. Ich muss nehmen was kommt.

        Oder wie meintest du das mit der DB?
        Das meinte er schon so.

        Wenn die Syntax, inklusive Zeilen gleich ist, kannst du die Datei doch Zeilenweise einlesen und dann explode, oder per preg_match, oder sonstwas, alle Daten auslesen...
        Falls sie unterschiedlich angeordnet ist, musst du die komplette Datei einlesen und zerlegen in das, was du haben willst, aber das ist dann etwas komplizierter...

        Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

        bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
        Wie man Fragen richtig stellt

        Kommentar


        • #5
          Jo also die Datei ist immer gleich.
          Eventuell mehr oder weniger Members, aber pro Member 9 Felder.

          Also vom Ansatz her:

          einzelne Datensätze selektieren
          explode alles zwischen ["mitgliedsnamen"] = { und },

          dann wiederrum die einzelnen Datensätze Zeilenweise einlesen und
          alles bis auf Zeile 7 und 8 herraus schmeissen und per update in ne DB schaufen.
          Sehe ich das richtig?
          Ein blue screen ist nicht immer was schlimmes... es hängt nur davon ab wo er zu sehen ist !
          www.d-creationz.de

          Kommentar


          • #6
            Also, wenn du die Ordnung der Members kennst, reicht das
            PHP-Code:
            $pattern "#\[\"RankIndex\"\] = (.+),\r\n#U";
            preg_match_all($pattern$matches);
            echo 
            '<pre>' print_r($matchestrue) . '</pre>'
            Sollte so funktionieren, ggf. RankIndex mit etwas anderem vertauschen!
            Falls du dir Ordnung nicht hast, musst du diese auch erst rausfinden, oder eben nach Mitgliedern splitten und dann für jeden einzeln extrahieren!

            Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

            bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
            Wie man Fragen richtig stellt

            Kommentar

            Lädt...
            X