kostenloser Webspace werbefrei: lima-city


String kürzen aber nich Wort abschneiden

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    strategiespiele

    strategiespiele hat kostenlosen Webspace.

    Hallo
    ich suche ach einer (der besten) Methode um
    einen String (text) zu kürzen, aber ohne am Ende ein Wort abschneiden

    Beispiel:
    einen Text ($string) mit 500 Zeichen soll auf max. 150 Zeichen ($maxlen) gekürzt werden
    an Stelle 145 begint Wort: "Information", das würde bei nur substr() zu "Infor" abgeschnitten
    also soll der Text bis zum Leerzeichen vor dem letzen Wort gekürzt werden.
    (wenn das letzte Wort nicht mehr in die $maxlen rein passt
    außer an der Position 151 ist ein Leerzeichen oder ein Satzzeichen . , ; / ) ] : oder Umbruch \n ... etc.

    ... habe 2 Möglichkeiten gefunden, welche ist die "beste" ?

    (1) String kürzen ... substr() + preg_replace()
    $endstr = substr($string, 0, $maxlen); 
    $string = preg_replace("/[^ ]*$/", '', $endstr);



    (2) String kürzen ... substr() + strrpos()
    $string = substr($string.' ' , 0 , $maxlen + 1);
    $string = substr($string , 0 , strrpos ($string , ' '));



    hm .... hier werden ja auch "nur" Leerzeichen zwischen Worte beachtet,
    nach einem (letzten) Wort kann aber auch Satzzeichen oder Umbruch sein

    ... oder wie sonst einen String "suber" kürzen




    Beitrag zuletzt geändert: 17.8.2013 11:08:19 von strategiespiele
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Hallo

    ich würde die zweite Methode nehmen, .... ohne preg_replace()

    das soll man ja - vwenn möglich - vermeiden / Alternative nutzen

    ... liest man so
  4. projekt-brainstorming

    projekt-brainstorming hat kostenlosen Webspace.

    Deine erste Methode ist auf jeden Fall flexsibler!
    Aber anstatt nur nach einem Leerzeichen zu suchen, kannst du direkt nach Satzzeichen und co suchen. Ein besseres Beispiel wäre:

    $endstr = substr($string, 0, $maxlen);
    $string = preg_replace("/[\s\.,!\?]*$/", '', $endstr);


    Beitrag zuletzt geändert: 24.8.2013 14:31:02 von projekt-brainstorming
  5. t**********e

    du hast noch viel mehr möglichkeiten mit regulären ausdrücken, schau dir den Aufbau der preg_replace genau an, dann müsstest du selbst zurecht kommen können
    grüße
  6. t**********r

    Du könntest ja auch die Wörter (vorrausgesetzt es ist mit Leerzeichen von anderen getrennt) mit explode voneinander trennen und dann wieder einige, z.B. 5 wieder zusammenwerfen.
  7. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!