Mehrer explode Verschateln?

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

  • Mehrer explode Verschateln?

    Hallo,

    gibt es eine Möglichkeit mehrer Explode zu verschachteln?

    Momenatn mache ich es so:

    PHP-Code:
    $start_a explode(' '$zeile);
    $zeit_start explode(':'$start_a[0]); 

  • #2
    Was ist denn der Inhalt von $zeile und was willst als Ergebnis?
    [FONT="Helvetica"]twitter.com/unset[/FONT]

    Shitstorm Podcast – Wöchentliches Auskotzen

    Kommentar


    • #3
      'Inhalt der zeile:

      0:00 InitGame: \_Admin\Gill0maT\_Email\Gilligan@tf-cb-clan.de\_Location\Düsseldorf\_Website\http://www.tf-cb-clan.de\g_compassSh...\gamename\Call of Duty 4\mapname\ mp_backlot \protocol\3\shortversion\1.4\sv_allowAnonymous\0\sv_disableClientConsole\1\sv_floodprotect\1\sv_host name\Gilligans 1 on 1 Server for Laire\sv_maxclients\2\sv_maxPing\200\sv_maxRate\20000\sv_minPing\0\sv_privateClients\0\sv_punkbuster \1\sv_pure\1\sv_voice\0\ui_maxclients\32


      Will die Zeit vorne haben aber auch noch andere Dinge, dann hätte ich es nähmlich nicht mit explode gemacht.

      Ausserdem könnte ich das auch noch an anderen stellen verwenden

      Kommentar


      • #4
        Naja, verschachteln würde ich es nicht nennen, aber

        1. explode: Zeilenumbruch
        2. explode: \_ auf den zweiten Index
        3. In ner schleife das Ergebnis exploden.

        vielleicht kann man auch ne schöne parsingfunktion mit strpos() und substr basteln. Aber ersteres wird warscheinlich performanter sein.
        ICH BIN ICH!!!

        Kommentar


        • #5
          Ich wollte es jetzt mit einer Funktion versuch, geht aber iregend wie nicht...


          also oben genanntes steht in $zeile, das ist meine Funktion:

          PHP-Code:
          function explo($param0$param1$param2$param3)
          {
             
             
          $explo explode($param0$param1);
             
          $explo explode($param2$explo[$param3]);

          Das ist der Befehl, aber auf das echo kommt nichts:

          PHP-Code:
          explo(' ',$zeile':''2');
          echo 
          $explo
          und bekomme noch folgende Fehlermeldung:

          Notice: Undefined variable: explo in C:\Inetpub\vhosts\scheissplesk.de\httpdocs\statscod4\stats_log.php on line 71
          Zeile 71 ist die echo zeile


          Mit print_r($explo); kommt auch keine Ausgabe, ist ja eigentlich ein Array... Fehlermeldung bleibt auch...
          Zuletzt geändert von Laire; 12.01.2008, 17:27.

          Kommentar


          • #6
            Entweder du arbeitest mit Referenzen oder du gibts das Ergebnis mit return zurück.
            Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

            Kommentar


            • #7
              Undefined variable:
              Na komm, das ist wirklich ne Grundlage. Und das Variablen nur innerhalb eine Funktion gültig sind (globals ausgenommen) zähle ich auch mal dazu.

              Übrigens kann ich nicht ganz nachvollziehen, warum du versuchst den dritten Teil (mit den ganzen eigenschaften) mittels Doppelpunkt ":" zu splitten. Da ist kein einziger Doppelpunkt drin...
              Zuletzt geändert von IchBinIch; 12.01.2008, 17:41.
              ICH BIN ICH!!!

              Kommentar


              • #8
                Sorry hatte hier die falsche nummer angegeben, ist nicht der dritte teil sondern der erste...

                also [0]


                Habe das ganze jetzt umgebaut und ich bekomme auch den wert ausgegeben aber immer noch eine Fehlermeldung vorweg:

                PHP-Code:
                function zeit($var1)
                {
                   
                $explo explode(' '$var1);
                   
                $explo explode(':'$explo[0]);
                   
                $explo = ($explo[0] * 60)+$explo[1];
                   return 
                $explo;
                }

                $zeit =& zeit($zeile);
                echo 
                $zeit



                Notice: Only variables should be assigned by reference in ...

                Wenn ich die Fhlermeldung bei google eingebe komme ich nur auf Seiten die den gleichen Fehler haben...

                Kommentar


                • #9
                  Wer lesen kann, ist klar im Vorteil!
                  Entweder du arbeitest mit Referenzen oder du gibts das Ergebnis mit return zurück.
                  Außerdem sollte wohl klar sein, dass zeit() keine Variable ist. Somit Macht auch die Meldung da Sinn. An dieser Stelle hat ne Referenz nämlich nichts zu suchen, weil sie gar nicht funktionieren kann.

                  Informier dich vorher, was du da machst, bevor du es einfach machst. Gesetz den Fall du würdest $zeit ändern. Erwartest du wirklich, dass php die Rückgabe der Funktion zeit() verändern kann? Geht natürlich nicht.

                  BTW: Wie gehts denn jetzt weiter. Machst du das gleiche jetzt für alle anderen Informationen die du benötigst auch so? Also den String jedes mal neu parsen lassen?
                  ICH BIN ICH!!!

                  Kommentar


                  • #10
                    Tja ich habe ein LogFile mit ca. 300MB als einigen 100.000 Zeilen...

                    Wobei es an sich nur 5 oder 6 unterschiedliche vom aufbau her gibt, sonst unterscheiden sie sich nur vom inhalt...

                    wird also eine schleife, die prüft was für eine art von zeile ist und dann nimmt sie den teil meines scriptes der sie auseinander nehmen kann... also für jeder art von zeile wird es einen funktionen block geben

                    Kommentar


                    • #11
                      Dass du für jede Zeile die selbe Funktion nimmst, ist ja vollkommen in Ordnung. Ich dachte nur, dass es um mehr ging als die Urzeit. Und das vermisse ich noch in deinem Code. Vielleicht bin ich aber einfach nur zu schnell...
                      ICH BIN ICH!!!

                      Kommentar


                      • #12
                        Der Rest komt ja noch, ich hatte das ganze ja schon einmal fertig und möchtes es nun auf eine saubere Art schreiben, das alte wa absolutes Chaos...

                        So geht es jetzt
                        PHP-Code:
                        function zeit($var1)
                        {
                           
                        $explo explode(' '$var1);
                           
                        $explo explode(':'$explo[0]);
                           
                        $explo = ($explo[0] * 60)+$explo[1];
                           return(
                        $explo);
                        }

                        echo 
                        zeit($zeile); 

                        Kommentar


                        • #13
                          Wenn du es sauber machen willst, dann vergib als erstes mal vernünftige parameter-namen. Da blickt ja keiner durch (param1 - paramN)
                          ICH BIN ICH!!!

                          Kommentar


                          • #14
                            Ach so, wenn erst nen preg match machst, kannste dir das erste explode sparen. Könnte vielleicht besser laufen.
                            ICH BIN ICH!!!

                            Kommentar


                            • #15
                              Hm, würde das geschwindigkeits vorsprünge geben?
                              Darum geht es nähmlich allgemein, da das Script ziemlich viel durcharbeiten muss...

                              Ich bin jetzt am überlegen ob ich für jede Zeile eine komplette Funktion schreibe oder die Funktionen einzel lasse. So müsste ich dann zwar später mehrere Funktionen für eine Zeile ausführen, brauch aber zum Beispiel nur einmal die Funktion für die Zeit in meiner Datei haben... (die natürlich ex liegt und eingebunden wird)

                              Kommentar

                              Lädt...
                              X