Problem mit einer Funktion, die Wortlänge prüft und ggf. eine \n setzt

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

  • Problem mit einer Funktion, die Wortlänge prüft und ggf. eine \n setzt

    Hallo, ich habe hier eine tolle Funktion, die mir Worte mit überlänge umbricht. Leider ist es so, dass beim Arbeiten eines Eintrags weitere \n eingefügt wird.

    Hier die Funktion

    PHP-Code:
    $maxCharQualitaet=8;
    $substitute="\n ";
    $newTextQualitaet="";
    $woerter explode " "$_SESSION['eingabe_qualitaet']);
    foreach(
    $woerter as $value){
    if(
    strlen($value)>$maxCharQualitaet){
    $newTextQualitaet.=chunk_split $value$maxCharQualitaet$substitute);
    }else {
    $newTextQualitaet.=$value." ";
    }

    Nun steht ja nach Eintrag eines Strings mit überlänge das hier drin
    string\nstring. Die wird erneut als überlänge bewertet und ein \n eingefügt

    Kann mir jemand ein Tipp geben wie ich das verhindern kann.

  • #2
    mit einem leerzeichen danach müsste dann
    Code:
    string\n string
    stehen und somit im nächsten durchlauf nicht als überlang zutreffen. wird da etwa kein leerzeichen gemacht?

    Kommentar


    • #3
      nein

      es wird noch ein \n gesetzt

      Kommentar


      • #4
        habs so versucht klappt aber auch nicht

        PHP-Code:
        $maxCharQualitaet=8;
        $substitute="\n";
        $newTextQualitaet="";
        $temptext "";
        $zeilenex explode "\n"$_SESSION['eingabe_qualitaet']);
        foreach(
        $zeilenex as $zeilen)
         {
          
        $temptext .= " ".$zeilen;
         }
        $woerter explode " "$temptext);
        foreach(
        $woerter as $value){
        if(
        strlen($value)>$maxCharQualitaet){
        $newTextQualitaet.=chunk_split $value$maxCharQualitaet$substitute);
        }else {
        $newTextQualitaet.=$value." ";
        }

        Kommentar


        • #5
          http://de.php.net/manual/en/function...plit.php#54165
          finde 10 unterschiede.

          Kommentar


          • #6
            vielen dank für die Hilfe

            sollte eigentlich so klappen. tut es aber leider nicht es werden wieder \n eingefügt.

            PHP-Code:
            $maxCharQualitaet=8;
            $substitute="\n";
            $newTextQualitaet="";
            $temptext =  str_replace("\n""\n "$_SESSION['eingabe_qualitaet']);
            $woerter explode " "$temptext);
            foreach(
            $woerter as $value){
            if(
            strlen($value)>$maxCharQualitaet){
            $newTextQualitaet.=chunk_split $value$maxCharQualitaet$substitute);
            }else {
            $newTextQualitaet.=$value." ";
            }

            Kommentar


            • #7
              ein beispiel: sei unser string "123456789" und die länge der zugelassenen wörter ist 3, als zeilenumbruch möchte ich # verwenden.

              nachm ersten durchlauf sieht der string so aus:
              Code:
              123#456#789
              der zweite durchlauf beginnt mit der ersetzung von # durch "# ":
              Code:
              123# 456# 789
              jetzt muss ich jedes wort durchgehen, beginne mit
              Code:
              123#
              hey, siehe da, es ist zu lang, denn 4>3. so chunk'e es zu
              Code:
              123##
              etc.

              siehst du jetzt, woher die überflüssigen zeilenumbrüche kommen?

              Kommentar


              • #8
                beim 2. durchlauf $maxCharQualitaet+1 ?

                das schreit ja geradezu nach rekusion
                Killerspiele sollten in der Größenordnung von Kinder********************grafie eingeordnet werden.(G. Beckstein)
                - ...und solche Behauptungen in "falsches Resourcenmanagement"

                Kommentar


                • #9
                  und beim 3. durchlauf?

                  Kommentar


                  • #10
                    habs getestet, arbeitet gut!

                    würde mich aber freuen wenn ihr was zum optimieren wüsstet

                    PHP-Code:
                    <?php
                    $str 
                    'ich bin eine Linearkombination';
                    $max 5;
                    $seperator '|';

                     
                    $words explode(' ',$str);

                     foreach(
                    $words as $word){
                         
                    $new_str .= umbrechen($word$max$seperator).' ';
                     }

                    function 
                    umbrechen($word$max$seperator){
                      if(
                    strlen($word) > $max){
                          
                    $new_word .= substr($word0,$max).$seperator.' ';
                          
                    $new_word .= umbrechen(substr($word,$max),$max,$seperator);
                      }else{
                        return 
                    $word;
                      }
                     return 
                    $new_word;
                    }

                    echo 
                    $new_str
                    ?>

                    // Ausgabe: ich bin eine Linea| rkomb| inati| on
                    Zuletzt geändert von zerni; 08.12.2006, 17:09.
                    Killerspiele sollten in der Größenordnung von Kinder********************grafie eingeordnet werden.(G. Beckstein)
                    - ...und solche Behauptungen in "falsches Resourcenmanagement"

                    Kommentar


                    • #11
                      http://de3.php.net/manual/en/function.wordwrap.php und die user notes.

                      Kommentar


                      • #12
                        toll...ich hasse es
                        Killerspiele sollten in der Größenordnung von Kinder********************grafie eingeordnet werden.(G. Beckstein)
                        - ...und solche Behauptungen in "falsches Resourcenmanagement"

                        Kommentar

                        Lädt...
                        X