real_wordwrap Funktion Problem

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

  • real_wordwrap Funktion Problem

    Ich habe folgenden Code im php Manual gefunden:
    PHP-Code:
    function real_wordwrap($string,$width,$break)
                {
                   
    $string preg_replace('/([^\s]{'.$width.'})/i',"$1$break",$string);
                   return 
    $string;
                } 
    mein Aufruf:

    PHP-Code:
    echo nl2br(real_wordwrap("Das ist eineineineine unheimlich langer String",3,"-\n")); 
    Die Funktion macht zwar das was ich will - nämlich wenn ein Wort länger als 3 Zeichen ist ein - einfügen und umbrechen, aber wenn ein Wort wie "Das" vorkommt tut er dies auch.

    Er soll aber bei Wörtern die genau 3 Buchstaben haben nicht umbrechen und bei Wörtern die länger als 3 Zeichen sind ein - anhängen und umbrechen.
    Zuletzt geändert von konSumi; 15.04.2005, 11:23.
    Flashtuts - Flash Tutorials und Downloads für alle Versionen
    psdtuts - Photoshop Tutorials, Galerie, Battles

  • #2
    Du sagst ihm doch dass es 3x vorkommen muss.... dann übergib halt ne 4?
    Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
    var_dump(), print_r(), debug_backtrace und echo.
    Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
    Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
    Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

    Kommentar


    • #3
      klasse und wenn ich ein Wort mit 4 habe macht er wieder nen schtrich dran. Bin ich ja weit gekommen...

      ...aber dann kann ich ja 5 schreiben...

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

      Kommentar


      • #4
        hab jetzt nicht den blick für dein regexp, aber nichtsdestotrotz: ist es nicht die gleiche ausgabe, wie:
        PHP-Code:
        echo real_wordwrap("Das ist eineineineine unheimlich langer String",3,"-<br />"); 
        ?

        Kommentar


        • #5
          Original geschrieben von konSumi
          klasse und wenn ich ein Wort mit 4 habe macht er wieder nen schtrich dran. Bin ich ja weit gekommen...

          ...aber dann kann ich ja 5 schreiben...
          Was du doch auch willst? Du gehst halt 1 höher als du willst
          Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
          var_dump(), print_r(), debug_backtrace und echo.
          Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
          Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
          Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

          Kommentar


          • #6
            Du könntest statt $width auch einfach ($width + 1) verwenden...
            Ich denke, also bin ich. - Einige sind trotzdem...

            Kommentar


            • #7
              Nein ich glaube konSumi möchte ein Wort nach $width Zeichen umbrechen, wenn das Wort mehr als $width Zeichen lang ist.

              Beispielausgabe (* markiert Trennstellen):
              "Läng*er als vier darf nich*t sein!"

              Bisher:
              "Läng*er als vier* darf* nich*t sein*!"

              Er braucht also ein anderes Suchmuster ... aber ich bin grad nicht mehr fähig ... G'Nacht!

              Kommentar


              • #8
                Original geschrieben von mrhappiness
                statt $width auch einfach ($width + 1) verwenden...
                Ich denke, also bin ich. - Einige sind trotzdem...

                Kommentar


                • #9
                  Also ich erkläre nochmal kurz, damit alles klar ist.

                  onemorenerd hat eigentlich recht:
                  Ich möchte in einem String ein Wort das länger als width ist umbrechen. Hat das Wort genau so viele Zeichen wie in width angegeben soll es nicht umgebrochen werden.

                  Beispiel: (mit width: 3)
                  Ein schöner Garten
                  soll werden zu:
                  Ein sch-
                  öne-
                  r Gar-
                  ten
                  Flashtuts - Flash Tutorials und Downloads für alle Versionen
                  psdtuts - Photoshop Tutorials, Galerie, Battles

                  Kommentar


                  • #10
                    Entweder
                    Code:
                    ([^\s]{'.($width + 1).'})
                    oder
                    Code:
                    ([^\s]{'.$width.'})\S.
                    probier das mal aus, was davon funktioniert so, wie du das gern hättest?
                    Ich denke, also bin ich. - Einige sind trotzdem...

                    Kommentar


                    • #11
                      das erstgenannte ist zwar im Grunde richtig, aber nun schreibt er ja nun vier zeichen hin und fügt - an und bricht um.

                      Ausgabe:
                      Das ist ein schö-
                      ner Gart-
                      en

                      Soll aber:
                      Das ist ein sch-
                      öne-
                      r Gar-
                      ten
                      Flashtuts - Flash Tutorials und Downloads für alle Versionen
                      psdtuts - Photoshop Tutorials, Galerie, Battles

                      Kommentar


                      • #12
                        Code:
                        $string = preg_replace('/([^\s]{'.$width.'})(\S..*)/e',
                          "'$1$break'.real_wordwrap('$2', (int)$width, \"$break\")",
                          $string);
                        oder
                        Code:
                        $string = preg_replace('/([^\s]{'.$width.'})(?=\S)/i',"$1$break",$string);
                        die funktionieren beide (denke ich), die zweite variante gefällt mir besser
                        Ich denke, also bin ich. - Einige sind trotzdem...

                        Kommentar


                        • #13
                          Jetzt hastes.
                          mrhappiness bist echt klasse!!! Danke es funktioniert. Nun schau ich mir mal die Regulären ausdrücke nochmal bissel näher an, damit ich auch verstehe wie dus gemacht hast.

                          Danke. Kann geschlossen werden
                          Flashtuts - Flash Tutorials und Downloads für alle Versionen
                          psdtuts - Photoshop Tutorials, Galerie, Battles

                          Kommentar


                          • #14
                            Original geschrieben von konSumi
                            Nun schau ich mir mal die Regulären ausdrücke nochmal bissel näher an, damit ich auch verstehe wie dus gemacht hast.
                            Löblich, bin schon auf deine Erklärung gespannt *g*

                            Danke
                            bitte
                            Kann geschlossen werden
                            Nein
                            Ich denke, also bin ich. - Einige sind trotzdem...

                            Kommentar

                            Lädt...
                            X