String auf eine bestimmte Zeichenlänge kürzen

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

  • String auf eine bestimmte Zeichenlänge kürzen

    Hallo

    Ich habe ein Frage zu meinem folgenden Script. Und zwar möchte ich einen String auf eine bestimmte Zeichenlänge kürzen. Mit
    PHP-Code:
    substr 
    ist das ja kein Problem, nur wird dann meistens ein Wort einfach abgeschnitten.
    Nun habe ich das so gelöst. Aber als PHP Neuling dünkt mich das ein wenig kompliziert.
    Hier mein Script:
    PHP-Code:
    <?php $string wordwrap($row['text1'], 18"<br />\n");
          
    $string str_replace("<br />",
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "
    $string);
          
    $string substr($string018);
          
    $string str_replace("&nbsp;"," "$string);
          
    $string str_replace("&nbsp"," "$string);
          
    $string str_replace("&nbs"," "$string);
          
    $string str_replace("&nb"," "$string);
          
    $string str_replace("&n"," "$string);
          
    $string str_replace("&"," "$string);
          echo 
    $string?>
    Kann man das auch einfacher lösen, oder ist das so in Ordnung?

    Gruss Andreas

  • #2
    Re: String auf eine bestimmte Zeichenlänge kürzen

    Original geschrieben von AndreasS
    nur wird dann meistens ein Wort einfach abgeschnitten.
    Und? Ist doch egal oo,

    Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

    bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
    Wie man Fragen richtig stellt

    Kommentar


    • #3
      Re: Re: String auf eine bestimmte Zeichenlänge kürzen

      Original geschrieben von ghostgambler
      Und? Ist doch egal oo,
      Ich denke was er versucht zu machen ist dass nach x Zeichen ein Zeilenunbruch gemacht wird für Textbereiche oder Ähnliches dass Seite nicht auseinander gezogen wird, aber dafür gibts natürlich bessere Lösungen (sauberes HTML, z.B. feste Breiten usw.).
      video2mp3.de - Kostenlos Videos von verschiedenen Videoportalen in MP3 umwandeln

      Kommentar


      • #4
        Ich versteh immer noch nicht so ganz was das soll - willst du vielleicht sowas?
        PHP-Code:
        implode ' 'array_slice explode ' ''Ein längerer Text ...' ), 018 ) ); 
        Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

        Kommentar


        • #5
          Er möchte einen $string kürzen nach xx Zeichen, die Trennung darf aber nicht mitten in einem Wort sein.

          @AndreasS, ist es das was du meinst ? dann guck mal hier
          4cms.de

          Kommentar


          • #6
            http://de.php.net/manual/en/function.wordwrap.php

            Kommentar


            • #7
              Original geschrieben von bUTschy
              Er möchte einen $string kürzen nach xx Zeichen, die Trennung darf aber nicht mitten in einem Wort sein.

              @AndreasS, ist es das was du meinst ? dann guck mal hier
              Ja das war genau das, was ich erreichen wollte. Mit deiner Funktion funktioniert das nun wunderbar.

              Vielen Dank an dich und auch an alle anderen, die mir bei meinem Problem wollten helfen.

              Gruss Andreas

              Kommentar


              • #8
                Ich weise mal dezent darauf hin, dass das Aufsplitten und manipulieren von solch großen Arrays alles andere als "billig" ist und Server für gewöhnlich ihre Leistung auch anders, gewinnbringender in die Luft pusten können.

                Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                Wie man Fragen richtig stellt

                Kommentar


                • #9
                  Original geschrieben von ghostgambler
                  Ich weise mal dezent darauf hin, dass das Aufsplitten und manipulieren von solch großen Arrays alles andere als "billig" ist und Server für gewöhnlich ihre Leistung auch anders, gewinnbringender in die Luft pusten können.
                  Und wie sollte man das deiner Meinung nach besser lösen? Beispiel?
                  Wie schon geschrieben, möchte ich verhindern, dass ein Wort einfach abgeschnitten wird. Vielmehr sollte halt das kürzen bei einem Leerzeichen greifen und nicht fix nach so und so vielen Zeichen.

                  Mit deinen Bemerkungen kann man überhaupt nichts anfangen und diese tragen auch überhaupt nicht zur Lösung des Problems bei! Somit kannst du dir solche auch sparen!

                  Gruss Andreas

                  Kommentar


                  • #10
                    Und wie sollte man das deiner Meinung nach besser lösen?
                    Es gibt fast immer noch eine bessere Lösung. Folgendes kürz nach eine beliebigen Anzahl von Zeichen (in diesem Fall 18) und schneidet dabei keine Wörter durch und das wesentlich schneller als irgendwelche riesen Arrays. ghostgambler hat durchaus Recht, vielleicht geht es sogar noch schneller.
                    PHP-Code:
                    $text 'Dies ist ein langer langer langer Text.';
                    echo 
                    substr $text0strrpos $text' ', - ( strlen $text ) - 18 ) ) ); 
                    Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

                    Kommentar


                    • #11
                      Das sieht nach einer SEHR guten Lösung aus!
                      (Bei UTF8-Seiten natürlich die mb_* Funktionen verwenden, aber das sollte klar sein~)
                      Funktioniert allerdings erst ab php5 :?


                      @meine unnützen Kommentare
                      Die Kommentare mögen aus deiner jetzigen Sichtweise auf die Dinge unnütz erscheinen - aber denk an mich, wenn du irgendwann ein bottle neck durch zu große Array-Manipulationen in deinen PHP-Skripten hast

                      Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                      bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                      Wie man Fragen richtig stellt

                      Kommentar


                      • #12
                        @ tontechniker

                        Ich bezweifle nicht, dass ghostgambler recht hat. Aber für einen PHP Anfänger sind solche Bemerkungen nicht wirklich hilfreich. Siehe auch seine erste Bemerkung! Darum musste ich das schreiben.
                        Nun zu deiner Lösung: Habe mir das eingebaut, bekomme nun aber eine Fehlermeldung.
                        [COLOR=red]Warning:
                        Wrong parameter count for strrpos() in /srv/www/htdocs/web5/html/anzeigen_****************s/liste.inc.php on line 63[/COLOR]

                        Welcher Parameter fehlt da noch?

                        Kommentar


                        • #13
                          was steht denn dazu im manual, was die funktion erwartet?

                          Kommentar


                          • #14
                            strrpos -- Sucht letztes Vorkommen des gesuchten Zeichens und liefert die Position

                            Nun suche ich ja nach einem Leerzeichen, sollte also soweit stimmen. Nur mit diesen ganzen Verschachtelungen komme ich nicht recht mit.

                            Kommentar


                            • #15
                              Das sieht nach einer SEHR guten Lösung aus!
                              Danke
                              Habe mir das eingebaut, bekomme nun aber eine Fehlermeldung.
                              Liegt wohl daran das du noch PHP 4 benutzt.
                              int strrpos ( string $haystack, string $needle [, int $offset] )
                              Anmerkung: Seit PHP 5.0.0 kann offset den Anfangspunkt der Suche einer beliebigen Anzahl Zeichen innerhalb des Strings angeben.
                              Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

                              Kommentar

                              Lädt...
                              X