Rene: Zeichenketten brechen - Array Ausgabe

Hallo,
Ich habe mir ein kleines php script gebastelt welches bei eingelesenen Zeichenketten, die laenger als ein vorgegebener Wert sind, Leerzeichen einfuegt.
Zum Beispiel gibt ein Benutzer auf meiner Seite so etwas wie: "WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW" ein. Dieses wuerde mein Template auseinander nehmen :-)
...Daher versuche ich mit folgendem nach etwa 5 Zeichen ein Leerzeichen einzufuegen. Klappt soweit auch nur bei der Ausgabe klappt es irgendwie nicht so.

Code:

if (empty($txt)) return false;
       for ($c = 0, $a = 0, $g = 0; $c<strlen($txt); $c++)
          {
           $d[$c+$g]=$txt[$c];
           if ($txt[$c]!=" ")
   $a++;
           else
 if ($txt[$c]==" ")
    $a = 0;
           if ($a==5)
    {
                   $g++;
                   $d[$c+$g]=" ";
                   $a = 0;
                   }
           }

for($i=0; $i<=380; $i++)
{
echo"$d[$i]";
}

print_r($d);

Wenn ich jetzt zum Beispiel die Zeichenfolge 1234567890 erhalte ich fuer echo und print_r folgende Ergebnisse:

ECHO: 12345 67890
PRINT_R:  Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 [5] => [6] => 6 [7] => 7 [8] => 8 [9] => 9 [10] => 0 [11] => )

Das heisst bei der Echo for-schleife erziele ich den gewuenschten Effekt. Bei Print_r sieht das anders aus...da sind keine leerzeichen zu sehen.
Sollte das "array" denn nicht immer gleich aussehen? Egal ob mit echo oder print ausgegeben wird?

Vielen Dank
Rene

  1. hi,

    ECHO: 12345 67890
    PRINT_R:  Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 [5] => [6] => 6 [7] => 7 [8] => 8 [9] => 9 [10] => 0 [11] => )

    Das heisst bei der Echo for-schleife erziele ich den gewuenschten Effekt. Bei Print_r sieht das anders aus...da sind keine leerzeichen zu sehen.

    Und welches Zeichen zeigt dir print_r für den Array-Index 5 an?

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. hey wahsaga,
      Mensch bin ich deppert ;-) Hab das total uebersehen...grrrrr mehr Konzentration das nexte mal dann :-)

      Oki nun haben wir das fertige Array...in meinem Fall mit dem Namen "d". Wie kann ich dieses nun in meine SQL Tabelle schreiben. Habe folgendes versucht:

      $insert = @mysql_query("INSERT INTO tabelle SET beschreibung = '$d'")) ;

      Wenn ich den Wert spater wieder auslese erhalte ich immer den Ausdruck: "Array" anstelle von 12345 67890.

      Hat jemand eine Idee?

      Rene

      1. Hallo,

        $d ist ein array. Durch einfache Wertzuweisung gehen die Daten darin verloren und, wie Du auch bemerkt hast, werden mit "Array" überschrieben. Wenn Du unbedingt ein array nutzen willst, wobei ich das nicht glaube, weil Du nur den String leerzeichengetrennt haben möchtest, solltest Du Dir serialize() und unserialize() ansehen! Ansonsten bleibt Dein Stichwort wordwarap() ;)

        Gruß aus Berlin!
        eddi

  2. Hallo,

    nebst wahsagas Einwand, wüßte ich zudem auch noch gerne, warum Du nicht einfach wordwrap() (bzw. ggf. str_split()) nutzt?

    Gruß aus Berlin!
    eddi

    1. Hey habt alle vielen Dank fuer die schnelle Hilfe.
      Ich habe es mit wordwrap realiesiert und es klappt einwand frei :-)

  3. Moin!

    Ich habe mir ein kleines php script gebastelt welches bei eingelesenen Zeichenketten, die laenger als ein vorgegebener Wert sind, Leerzeichen einfuegt.

    Es gibt die Funktion wordwrap(), die schon derartiges tut.
    http://de.php.net/wordwrap

    Zusätzlich gibt es in den Kommentaren zu dieser Funktion noch reichhaltig weitere Vorschläge zu textformatierenden Funktionen.

    - Sven Rautenberg

    --
    My sssignature, my preciousssss!