Jenkins: Mit explode einen String Teilen - explodieren

Hallo Leute, ich habe folgendes problem: und zwar will ich einen String aus einer Datei splitten aber das will nicht wirklich funktionieren. Wenn ich den String dann ausgebe dann kommt immer nur ein buchstabe. Mit normalen strings funktioniert es. Der Sinn ist einfach aus einem Formular die ausgefüllten Felder in die datei schreiben und den Text aus der datei als Tabelle ausgeben lassen. Schreiben ist kein thema nur das explode klappt nicht so wie ich es dachte.

MfG Jenkins

Falls der Code den ich bisher habe nötig ist poste ich ihn natürlich auch.

  1. Hallo,

    ohne Beispiel geht es nicht. Explode funktioniert, so wie es funktioniert (;-).

    Du kennst zudem serialize() und unserialize()? Auch die Möglichkeit, durch Input-Feldbenennung bereits ein Array zu erzeugen?

    Name:<input type="text" name="myForm[name]">
    Mail:<input type="text" name="myForm[mail]">

    var_dump($_GET["myForm"]) gibt dir dann alle Formulardaten als Array. Serialisieren, speichern, kein explode nötig.

    Gruß

    jobo

    1. Hallo,

      ohne Beispiel geht es nicht. Explode funktioniert, so wie es funktioniert (;-).

      Du kennst zudem serialize() und unserialize()? Auch die Möglichkeit, durch Input-Feldbenennung bereits ein Array zu erzeugen?

      Name:<input type="text" name="myForm[name]">
      Mail:<input type="text" name="myForm[mail]">

      var_dump($_GET["myForm"]) gibt dir dann alle Formulardaten als Array. Serialisieren, speichern, kein explode nötig.

      Gruß

      jobo

      Hallo,

      Okay auch wieder wahr ;€ ich lasse aber mal den teil mit dem fopen raus.

      While($lesen = fread($fp,1024)){
      Echo $lesen // zur Ausgabe in normalform
      $array = explode(',', $lesen, 1);
      Echo $array[0];
      }

      1. Hallo,

        $lesen = "bla,blub,pupp"
        $liste = explode(',', $lesen);
        var_dump($liste);

        so wird ein erster test draus. im folgeschritt checkst du, ob deine leseoperation den korrekten wert in $lesen packt.

        aber du machst es wirklich unnötig kompliziert. genau dafür ist file_get_contents und file_put_contents sowie serialize/unserialize da.

        Gruß

        jobo

        1. Hallo,

          $lesen = "bla,blub,pupp"
          $liste = explode(',', $lesen);
          var_dump($liste);

          so wird ein erster test draus. im folgeschritt checkst du, ob deine leseoperation den korrekten wert in $lesen packt.

          aber du machst es wirklich unnötig kompliziert. genau dafür ist file_get_contents und file_put_contents sowie serialize/unserialize da.

          Gruß

          jobo

          Hi,

          wieso soll ich mir das unnötig kompliziert machen? Einfach den Text der Datei aufsplitten... Da ist ja einfach nur explode zu benutzen...Wieso soll ich dann funktionen wie file_get_contents und file_put_contents benutzen? Ich möchte einfach nur explode benutzen und würde gerne wissen wieso es nicht artgerecht geteilt wird!!!

          Gruß Jenkins

          1. Hallo,

            wieso soll ich mir das unnötig kompliziert machen? Einfach den Text der Datei aufsplitten...

            Das war ja nur der zweite Teil meiner Antwort.

            Da ist ja einfach nur explode zu benutzen...Wieso soll ich dann funktionen wie file_get_contents und file_put_contents benutzen? Ich möchte einfach nur explode benutzen und würde gerne wissen wieso es nicht artgerecht geteilt wird!!!

            Das habe ich im ersten beantwortet. Du musst schon testen/wissen, was für einen String du verfütterst. Explode funktioniert ziemlich simpel. Es liegt an Deinem String, den du offenbar nicht korrekt ausliest oder aber der nicht mit den Delimitern versehen ist, die du angibst. var_dump() könnte dir, siehe mein Beispiel, da helfen.

            Gruß

            jobo

          2. Hi Leroy, (Ich darf dich doch so nennen? Es passt so schoen.)

            Wie jobo schon erklaert hat, bezog sich lediglich der zweite Teil seiner Antwort auf eine andere Herangehensweise.

            Der Erste macht, was Du versuchst. Hast Du spasseshalber mal den gelesenen String ausgegeben? Mach das mal.

            --
            "Die Diebesgilde beklagte sich darueber, dass Mumm in aller Oeffentlichkeit behauptet hatte, hinter den meisten Diebstaehlen steckten Diebe."
                  - T. Pratchett
            1. Hi Leroy, (Ich darf dich doch so nennen? Es passt so schoen.)

              Und du meinst, das versteht jemand aus ohne weiteren Kommentar?

              1. Hi Leroy, (Ich darf dich doch so nennen? Es passt so schoen.)

                Und du meinst, das versteht jemand aus ohne weiteren Kommentar?

                Jenkins wohl schon. Du auch. Ziel erreicht... (oder hast Du gesucht?) Ist ja auch, wie der Wikiartikel (den ich bis eben gar nicht kannte) schon erwähnt, mittlerweile ein Internet Meme und auch ausserhalb der 'Szene' nicht unbekannt.

                Ich gehe jedenfalls davon aus, das Jenkins sich deshalb so nennt. Ansonsten weiß Jenkins jetzt, daß dieser Name zumindest im internet schnell vorbelastet ist. Mann könnt sich auch gleich 'noob' oder besser 'boon' nennen. Und für die halte ich hier eine Erklärung auch nicht wirklich nötig.

                --
                "Die Diebesgilde beklagte sich darueber, dass Mumm in aller Oeffentlichkeit behauptet hatte, hinter den meisten Diebstaehlen steckten Diebe."
                      - T. Pratchett
                1. Jenkins wohl schon. Du auch. Ziel erreicht... (oder hast Du gesucht?)

                  Nein, mir ist Leeroy durchaus ein Begriff, auch wenn ich selbst kein WoW Spiele - aber für jemanden, der über 7 Jahre ein Spieleblog betreibt, wäre es eine Schande so ein Mem nicht zu kennen.

                  1. Moinsen!

                    Nein, mir ist Leeroy durchaus ein Begriff, auch wenn ich selbst kein WoW Spiele - aber für jemanden, der über 7 Jahre ein Spieleblog betreibt, wäre es eine Schande so ein Mem nicht zu kennen.

                    Das waere zumindest wuenschenswert. ;) Hin und wieder machen Leute aber scheinbar immer noch Dinge, von denen sie auch etwas Ahnung haben, bzw. der Job faerbt ab. Ich hab das dumpfe Gefuehl, das wird immer seltener.

                    --
                    "Die Diebesgilde beklagte sich darueber, dass Mumm in aller Oeffentlichkeit behauptet hatte, hinter den meisten Diebstaehlen steckten Diebe."
                          - T. Pratchett
      2. Hi,

        While($lesen = fread($fp,1024)){

        du liest also bis zu 1024 Byte aus der Datei ...

        Echo $lesen // zur Ausgabe in normalform

        überprüfst hier, ob der gelesene String korrekt ist (und, ist er?) ...

        $array = explode(',', $lesen, 1);

        und zerlegst ihn dann in maximal EIN Teilstück. Wie stellst du dir das vor? "Teil mir den String auf, aber mach nur ein Stück draus"? Lies am besten nochmal nach, was explode() mit dem dritten Argument macht. Vielleicht möchtest du den Parameter sogar ganz weglassen; das kann ich aber im Moment nicht abschätzen (kommt drauf an, was du mit den Daten weiter machen willst).

        Echo $array[0];

        Hier dürfte nochmal der unveränderte String erscheinen.

        Übrigens: PHP-Keywords und/oder Funktionsnamen mit großem Anfangsbuchstaben zu schreiben, ist sehr ungewöhnlich und wird wohl die meisten Leser irritieren.

        So long,
         Martin

        --
        Wer im Glashaus sitzt, sollte Spaß am Fensterputzen haben.
        1. Hi,

          While($lesen = fread($fp,1024)){

          du liest also bis zu 1024 Byte aus der Datei ...

          Echo $lesen // zur Ausgabe in normalform

          überprüfst hier, ob der gelesene String korrekt ist (und, ist er?) ...

          $array = explode(',', $lesen, 1);

          und zerlegst ihn dann in maximal EIN Teilstück. Wie stellst du dir das vor? "Teil mir den String auf, aber mach nur ein Stück draus"? Lies am besten nochmal nach, was explode() mit dem dritten Argument macht. Vielleicht möchtest du den Parameter sogar ganz weglassen; das kann ich aber im Moment nicht abschätzen (kommt drauf an, was du mit den Daten weiter machen willst).

          Echo $array[0];

          Hier dürfte nochmal der unveränderte String erscheinen.

          Übrigens: PHP-Keywords und/oder Funktionsnamen mit großem Anfangsbuchstaben zu schreiben, ist sehr ungewöhnlich und wird wohl die meisten Leser irritieren.

          So long,
          Martin

          Hi,

          Übrigens: PHP-Keywords und/oder Funktionsnamen mit großem Anfangsbuchstaben zu schreiben, ist sehr ungewöhnlich und wird wohl die meisten Leser irritieren.

          Nein ich war eben mit meinem Handy im internet und da schreibt er mir die Keywords am anfang nach dem Satz groß und hab vergessen es dort zu ändern auf klein ;)

          Hier dürfte nochmal der unveränderte String erscheinen.

          »»

          Jaein er gibt mir bei 0 den ersten punkt was vor dem "," steht aber auch nur in der ersten zeile

          du liest also bis zu 1024 Byte aus der Datei ...

          Hab es so gelernt das wir bis zu 1024 Bytes aus der Datei lesen sollen jenachdem was eben in eine Zeile der Datei schreibt ist ja nicht immer nur paar zeichen

          überprüfst hier, ob der gelesene String korrekt ist (und, ist er?) ...

          Ja der gelesene string is ja eigl korrekt da steht was drin und wird ja auch ins array gespeichert.

          1. Hoi!

            Hab es so gelernt das wir bis zu 1024 Bytes aus der Datei lesen sollen jenachdem was eben in eine Zeile der Datei schreibt ist ja nicht immer nur paar zeichen

            Jau. Is Deine Datei vielelicht kleiner als 1024 Bytes?  (http://php.net/manual/de/function.fread.php)

            überprüfst hier, ob der gelesene String korrekt ist (und, ist er?) ...

            Ja der gelesene string is ja eigl korrekt da steht was drin und wird ja auch ins array gespeichert.

            Und auch nur eine Zeile?! Vielleicht suchst Du eher fgets() oder fgetss()?

            --
            "Die Diebesgilde beklagte sich darueber, dass Mumm in aller Oeffentlichkeit behauptet hatte, hinter den meisten Diebstaehlen steckten Diebe."
                  - T. Pratchett
        2. @@Der Martin:

          nuqneH

          du liest also bis zu 1024 Byte aus der Datei ...

          Was problematisch ist.

          überprüfst hier, ob der gelesene String korrekt ist (und, ist er?)

          Überprüft er? Der gelesene String ist möglicherweise nicht korrekt, weil die Bytesequenz eines Zeichens nicht mehr komplett ist.

          Es wird doch (hoffentlich) UTF-8 als Zeichencodierung verwendet, oder?

          Die Nicht-ASCII-Zeichen werden ja in UTF-8 durch eine Sequenz mehrerer Bytes dargestellt. Und kann nicht wissen, ob man nicht durch die Beschränkung auf 1024 eine Sequenz zerhackt.

          Es ist immer problematisch, auf Byte-Ebene anstatt auf Zeichen-Ebene zu arbeiten.

          Qapla'

          --
          Volumen einer Pizza mit Radius z und Dicke a: pi z z a
      3. Hi,

        gewöhne dir bitte mal sinnvolles Zitieren an - nicht das komplette Vorposting, sondern nur die Aussagen, auf die du dich konkret beziehst. Schau dir bitte an, wie andere hier das machen.

        MfG ChrisB

        --
        “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
  2. Falls der Code den ich bisher habe nötig ist poste ich ihn natürlich auch.

    Nein, der Code ist nicht nötig - weitere beschreibungen deiner Vorgehensweise natürlich auch nicht - wir sind immer daran interessiert, unsere hellseherischen Fähigkeiten zu schärfen :D

    SCNR