Zeilenumbruch bei einem zu langen Wort

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

  • Zeilenumbruch bei einem zu langen Wort

    Hi,
    erstmal: Habe die Suchfunktion genutzt aber nicht das gefunden, was für mnich rellevant ist.

    Ich habe ein Gästebuch. Funktioniert. Nun hat jemand ein Wort nach dem Motto geschrieben: "sooooooooooooooooooooooooooooooooooooo" und dann hat es natürlich das Design gesprengt. Ich will nun Mein String überprüfen ob ein Wort!!! eine gewisse Zeichenanzahl enthält. Wenn dies der Fall ist, soll ein Bindestrich erstellt werden und umgebrochen werden.

    Habe nun schon viel von Wordwrap gelesen aber das bricht ja nach einer bestimmten Zeichenzahl im String um. Das will ich ja nicht. Sondern es soll ja umbrechen wenn ein Wort in einem String eine gewisse Zeichenzahl hat.

    Meine Idee ist die, dass ich im String von Leerzeichen zu Leerzeichen gehe und schaue wie viele Zeichen dazwischen liegen. Wenn das den Wert übersteigt. Mache umbruch.

    Kann mir das jemand helfen komme da irgendwie nicht weiter

    Danke schonmal
    Flashtuts - Flash Tutorials und Downloads für alle Versionen
    psdtuts - Photoshop Tutorials, Galerie, Battles

  • #2
    wordwrap und die User Contributed Notes lesen da ist was dabei, was dir helfen wird (real_wordwrap)
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      The wordwrap2 function posted by lteague is exactly what I was looking for. Unfortunatly it has an error. It will add the cut string any time a space is encountered outside of a tag since
      (!(0 % x)), where x != 0, is always true.

      Here's a fixed function with a few other improvments. Again this function will split a word that is longer that $cols and is outside any HTML tags by the string $cut. Lines with whitespace in them are ok, only single words over $cols lenght are split.

      function wordwrap2($str, $cols, $cut)
      {
      $len = strlen($str);
      $tag = 0;
      for ($i = 0; $i < $len; $i++) {
      $chr = $str[$i];
      if ($chr == '<') {
      $tag++;
      } elseif ($chr == '>') {
      $tag--;
      } elseif ((!$tag) && (ctype_space($chr))) {
      $wordlen = 0;
      } elseif (!$tag) {
      $wordlen++;
      }

      if ((!$tag) && ($wordlen) && (!($wordlen % $cols))) {
      $chr .= $cut;
      }

      $result .= $chr;
      }

      return $result;
      }


      Ich glaub das ist genau was ich suche. Nur verstehe ich das nicht ganz und es funktioniert auch irgendwie bei mir nicht. Ich dachte $str is mein String und Cols die Maximallänge, die ein Wort haben darf. Mit cut kann ich leider nix anfangen.
      Flashtuts - Flash Tutorials und Downloads für alle Versionen
      psdtuts - Photoshop Tutorials, Galerie, Battles

      Kommentar


      • #4
        Original geschrieben von mrhappiness
        wordwrap und die User Contributed Notes lesen da ist was dabei, was dir helfen wird (real_wordwrap)
        was meinst du wohl, warum ich real_wordwrap erwähnt habe?
        vielleicht weil es auf der seite eine funktion gibt, die wo da so heißen tut und das macht, was du willst?
        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar


        • #5
          Oh je ich glaub ich bin zu doof ne Funktion aufzurufen (weiss auch nich was das break macht):

          PHP-Code:
          <?
          $str="Ich bin ein schönes Pferd hüa hüa hohohohohohhohohohohohohohohohohoho!";
          $cols="10";

          function real_wordwrap($string,$width,$break)
          {
             $string = preg_replace('/([^\s]{'.$width.'})/i',"$1$break",$string);
             return $string;

          echo real_wordwrap($str,$cols,$break);

          ?>
          Flashtuts - Flash Tutorials und Downloads für alle Versionen
          psdtuts - Photoshop Tutorials, Galerie, Battles

          Kommentar


          • #6
            Original geschrieben von konSumi
            Ich glaub das ist genau was ich suche. Nur verstehe ich das nicht ganz und es funktioniert auch irgendwie bei mir nicht.
            dein 2. Satz widerspricht dein 1. Wie kannst du wissen, dass es die Fkt. ist, die du suchst, wenn du noch nicht mal genau weißt, wie sie funz

            Kommentar


            • #7
              Original geschrieben von konSumi
              weiss auch nich was das break macht
              was könnte denn break bedeuten

              btw: was könnte den $cut gemeint sein?

              Kommentar


              • #8
                Ok thx mrhappiness. Ich habs gerafft

                so gehts:

                PHP-Code:
                <?
                $str="Ich bin ein schönes Pferd hüa hüa hohohohohohhohohohohohohohohohohoho!";
                $cols="10";
                $break="-\n";

                function real_wordwrap($string,$width,$break)
                {
                   $string = preg_replace('/([^\s]{'.$width.'})/i',"$1$break",$string);
                   return $string;

                echo nl2br(real_wordwrap($str,$cols,$break));

                ?>
                Flashtuts - Flash Tutorials und Downloads für alle Versionen
                psdtuts - Photoshop Tutorials, Galerie, Battles

                Kommentar

                Lädt...
                X