explode() ohne delimiter

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

  • explode() ohne delimiter

    Hallo,
    würde mal gern wissen ob es möglich ist einen String per explode() methode
    in ein array zu wandeln.
    So habe ich mir das gedacht

    PHP-Code:
    $string 'welt';
    //soll werden
    $array[0]['w'];
    $array[1]['e'];
    $array[2]['l'];
    $array[3]['t']; 
    mfg mo

  • #2
    PHP-Code:
    $string 'welt';
    for (
    $i 0$i strlen($string); $i++)
    {
      
    $bla[] = $string[$i];
    }
    print_r($bla); 
    Vielleicht gibt es noch was Besseres, aber das fällt mir im Moment nicht ein.

    Peter
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Kommentar


    • #3
      PHP-Code:
      $string 'welt';
      //soll werden
      echo $string[2]; 
      Mal so als Beispiel - damit sollte dir klar werden, wie du dir das Array so bauen kannst, wie du es haben willst - wobei ich aber nicht verstehe, wieso man das in der Form haben will.

      EDIT:
      Das hier
      PHP-Code:
      $array[0]['w'];
      $array[1]['e'];
      $array[2]['l'];
      $array[3]['t']; 
      ist sowieso nicht lebensfähig.
      Zuletzt geändert von Quetschi; 05.09.2011, 12:09.
      Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
      Schön - etwas Geschichte kann ja nicht schaden.
      Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

      Kommentar


      • #4
        Hallo,

        PHP: str_split - Manual

        Gruß,

        Amica
        [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
        Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
        Super, danke!
        [/COLOR]

        Kommentar


        • #5
          Dankeschön str_split ist das was ich gesucht habe.

          mfg mo

          Kommentar


          • #6
            Zitat von AmicaNoctis Beitrag anzeigen
            ... und zur Ergänzung:

            PHP-Code:
            preg_split('//u'$input); 
            Macht dasselbe, ist aber Unicode-tauglich (UTF-8).
            Klingon function calls do not have “parameters”‒they have “arguments”‒and they always win them!

            Kommentar


            • #7
              Das erzeugt allerdings bei mir einen Leereintrag ('') vorne und hinten im Array.

              Vielleicht noch als Verfeinerung:

              PHP-Code:
              preg_split('/(?<!^)(?!$)/u'$string ); 
              - Quelle: PHP: mb_split - Manual

              Kommentar


              • #8
                Zitat von mermshaus Beitrag anzeigen
                Das erzeugt allerdings bei mir einen Leereintrag ('') vorne und hinten im Array.
                FYI: Das Flag PREG_SPLIT_NO_EMPTY existiert.
                I don't believe in rebirth. Actually, I never did in my whole lives.

                Kommentar


                • #9
                  Das kommt davon, wenn man einfach was hinschreibt, ohne zu testen.
                  Ich hatte PREG_SPLIT_NO_EMPTY ursprünglich mit drin, war aber der Meinung, dass es hier nicht nötig ist ...
                  Zuletzt geändert von fireweasel; 05.09.2011, 21:59.
                  Klingon function calls do not have “parameters”‒they have “arguments”‒and they always win them!

                  Kommentar


                  • #10
                    Noch einfacher:

                    PHP-Code:
                    $string 'welt';
                    echo 
                    $string{3}; // 't'

                    for($i 0$i strlen($string); $i++){
                        echo 
                    $string{$i};

                    Und für das was du haben willst:
                    PHP-Code:
                    $arr = array();
                    for(
                    $i 0$i strlen($string); $i++){
                        echo 
                    $string{$i};
                        
                    $arr[][$string{$i}] = '';

                    Zuletzt geändert von prego; 05.09.2011, 23:32.

                    Kommentar


                    • #11
                      Das macht dir str_split wesentlich schneller (nicht getestet, aber die Variante, die möglichst viel in C-Code erledigt und möglichst wenige Funktionen aufruft, ist bei sowas meist schneller).

                      Wenn du es multibyte-sicher haben willst (etwa für UTF-8), musst du in deiner Schleife außerdem mb_strpos auspacken und dann bist du im FUBAR-Land. mb_strpos merkt sich meines Wissens nicht, dass Character 46 an Offset 72 stand, die Funktion muss Character 47 erneut von Stringbeginn an abzählen. Ich gehe davon aus, dass der reguläre Ausdruck das schlauer hinbekommt, da die entsprechende Funktion nur einmal aufgerufen wird und deshalb nicht zwischen den Aufrufen den Kontext verliert.
                      Zuletzt geändert von mermshaus; 06.09.2011, 00:02.

                      Kommentar


                      • #12
                        Zitat von prego Beitrag anzeigen
                        Noch einfacher:

                        PHP-Code:
                        $string 'welt';
                        echo 
                        $string{3}; // 't'

                        for($i 0$i strlen($string); $i++){
                            echo 
                        $string{$i};

                        Und für das was du haben willst:
                        PHP-Code:
                        $arr = array();
                        for(
                        $i 0$i strlen($string); $i++){
                            echo 
                        $string{$i};
                            
                        $arr[][$string{$i}] = '';

                        Und wenn man sich noch mehr anstrengt, kann man selbe Funktionalität sicher auch noch in 50 Programmzeilen verpacken. Aber was hat man davon?

                        Ich versuche meinen Code immer so performant und lesbar wie (sinnvoll) möglich zu halten. Den umgekehrten Ansatz (möglichst lang und unlesbar) hab ich noch gar nicht in Betracht gezogen. Vielleicht versuch ich das mal, wenn ich was neues ausprobieren will

                        Die Schreibweise mit den geschwungenen Klammern hat übrigens keine Zukunft.

                        Kommentar


                        • #13
                          Mit Multibyte habt ihr natürlich vollkommen recht. Mir ging es nur darum die Möglichkeit mit geschweiften Klammern aufzuzeigen.

                          Warum hat sie keine Zukunft? Source?

                          Kommentar


                          • #14
                            Zitat von prego Beitrag anzeigen
                            Mit Multibyte habt ihr natürlich vollkommen recht. Mir ging es nur darum die Möglichkeit mit geschweiften Klammern aufzuzeigen.

                            Warum hat sie keine Zukunft? Source?
                            Strings may also be accessed using braces, as in $str{42}, for the same purpose. However, this syntax is deprecated as of PHP 6. Use square brackets instead.

                            PHP: Strings - Manual

                            Kommentar


                            • #15
                              Danke. Hatte da was im Hinterkopf, war mir aber nicht sicher.

                              Kommentar

                              Lädt...
                              X