xpfreund: Problem bei Stringzerlegung

Hallo,

ich habe einen String.
Jetzt will ich darin nach '<br />' suchen. Bis dahin ja kein Problem.
Der Text
vor einem <br /> kann ziemlich lang sein, er kommt aus einem Eingabefeld.
Nun möchte ich, dass der Text alle bisherigen Zeilenumbrüche beibehält und an Stellen, wo der Text eine bestimmte Anzahl also z. B. 40 Zeichen überschreitet, ein weiterer <br /> eingefügt wird.
Laut PHP-Handbuch schien strtok dafür passend zu sein.

  
$element="Betrifft: Internet, Linux-Server, File-Server, E-Mail,<br />Faxe ...<br />Betrifft: Internet, Linux-Server, File-Server, E-Mail,<br />Faxe ...";  
$treffer=strtok($element,'<br />');  
echo "Übergabe: <br />$treffer<br />";  

Das <br> einfügen und so klappt ja, nur die Zerlegung nicht.
Bei dem Code kommt nur "Bet" raus, obwohl ja bis E-Mail, alles kommen müsste.
Wisst ihr was man da machen kann?
Vielleicht gibts ja irgendwelche Alternativen?
explode und str_split schienen mir keine wirklichen Alternativen.
Aber vielleicht lieg ich ja falsch.

gruß aus Senftenberg am See

  1. Laut PHP-Handbuch schien strtok dafür passend zu sein.

    Nein, ist es nicht, denn $token beinhaltet eine *Liste* von Zeichen, nach denen Du trennen willst (siehe Handbuch). Deshalb ist das hier:

    $treffer=strtok($element,'<br />');

    
    > Bei dem Code kommt nur "Bet" raus  
      
    völlig korrekt, da er nach "Bet" das erste Zeichen aus der Liste findet, nämlich ein "r".  
      
    
    > Wisst ihr was man da machen kann?  
      
    Ja, nimm eine der als Alternativen in der Doku genannten Funktionen.  
      
    Siechfred
    
    -- 
    Hinter den Kulissen passiert viel mehr, als man denkt, aber meistens nicht das, was man denkt.
    
    1. Hallo,

      Nein, ist es nicht, denn $token beinhaltet eine *Liste* von Zeichen, nach denen Du trennen willst (siehe Handbuch).

      Dann war das ein Verständnisproblem, weil hier strtok
      steht das anders.

      gruß aus Senftenberg am See

      1. Hi,

        Nein, ist es nicht, denn $token beinhaltet eine *Liste* von Zeichen, nach denen Du trennen willst (siehe Handbuch).
        Dann war das ein Verständnisproblem, weil hier strtok
        steht das anders.

        Schon vor dem ueberfahren des Links war mir nach dieser Aussage fast klar, dass es sich wieder mal um selfphp handeln muesste ...

        Bitte, Bitte, BITTE vergiss diese Seite - sie ist grottenschlecht.
        Halte dich ans offizielle Manual.

        MfG ChrisB

    2. Hallo,

        
      function umbruch ($text,$anzzeich,$trennz) {  
      $alletreffer=explode('<br />',$text);  
      $i=0;  
      $ergebnis='';  
      foreach ($alletreffer as $treffer) {  
        $i++;  
        if (strlen($treffer) > $anzzeich) $treffer = wordwrap($treffer,$anzzeich,$trennz);  
        if ($i > 1) $treffer = str_pad ( $treffer, (strlen($treffer) + strlen($trennz)), $trennz, STR_PAD_LEFT ); //Umbruch dazu  
        $ergebnis .= $treffer;  
      }  
      if ($ergebnis != '') return $ergebnis;  
      else return $text;  
      }  
        
      $element="Betrifft: Internet, Linux-Server, File-Server, E-Mail,<br />Faxe ...<br />Betrifft: Internet, Linux-Server, File-Server, E-Mail,<br />Faxe ...";  
      echo 'Umbruch:<br /> '.umbruch($element,20,'<br />')."<br />";  
      
      

      gruß aus Senftenberg am See

  2. Hallo
    und wie wäre es damit?

    $zeichenkette = "Dies ist ein Satz.<br> Und noch einer.<br>Bla Bla";
    $test = strtok($zeichenkette," ");
    while ($test) {

    echo $test ;

    $test = strtok(" ");

    }
    Gruss
    hawk

    1. Hallo,

      Hallo
      und wie wäre es damit?

      $zeichenkette = "Dies ist ein Satz.<br> Und noch einer.<br>Bla Bla";
      $test = strtok($zeichenkette," ");
      while ($test) {

      echo $test ;

      $test = strtok(" ");

      }

      er soll ja nicht jedes Wort einzeln ausgeben.

      gruß aus Senftenberg am See