kostenloser Webspace werbefrei: lima-city


Zeichenkette verarbeiten - beim letzten Leerzeichen abschneiden

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    karpfen

    Kostenloser Webspace von karpfen

    karpfen hat kostenlosen Webspace.

    Guten Morgen zusammen.

    Ich habe folgende Problemstellung zu lösen. Für eine Vorschaufunktion will ich aus meiner Datenbank Nachrichten auslesen und für eine Vorschau ausgeben in gekürzter Form.

    Beispiel:

    Datenbankeintrag: Das ist eine tolle Nachricht, welche in der Vorschau erscheinen soll und zwar in gekürzter Form.

    Ich lese also die Nachricht aus der Datenbank und entferne diversen Code, so dass ich am Ende nur noch eine normale Zeichenkette habe. Danach kürze ich die Zeichenkette auf 160 Zeichen.

    Bei folgendem Beispiel könnte dann die Ausgabe wie folgt aussehen, was natürlich nicht so toll ist.

    Ausgabe: Das ist eine tolle Nachricht, welche in der Vorschau erscheinen soll und zwar in gekü

    Man sieht, das letzte Wort ist abgeschnitten, deshalb würde ich nun von dort zum letzten Leerzeichen gehen und von dort an das letzte Stück abschneiden, hab aber grad keine Idee, wie das zu realisieren ist.

    Vielen Dank schonmal für Anregungen und Tipps. :biggrin:
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

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

  3. thomasba

    Co-Admin Kostenloser Webspace von thomasba

    thomasba hat kostenlosen Webspace.

    Dazu kann man die PHP-Funktion strrpos verwenden
    <?php
    $str = substr($str,0,160); // String auf 160 zeichen kürzen
    $pos = strrpos($str," "); // letzten leerzeichen suchen
    if($pos !== false) { // wenn gefunden
        $str = substr($str,0,$pos); // bis zum letzten leerzeichen kürzen
    }
    ?>


    Beitrag zuletzt geändert: 28.10.2009 10:16:56 von thomasba
  4. geht ganz einfach:

    folgendes Beispiel sucht die Position des Leerzeichens (beginnend ab dem 140. Zeichen). schneidet dort ab und fügt [...] hinten dran

    if (strlen($string) > 160)
    {
    	$str_len  = strpos($string," ",140);
    	$string = substr($string,0,$str_len)." [...]";
    }


    Ohne if-Abfrage wird der String automatisch nur bis zum 1. Leerzeichen ausgegeben.

    Hoffe, das hilft Dir weiter.


    Beitrag zuletzt geändert: 28.10.2009 10:14:07 von rnitsche
  5. Autor dieses Themas

    karpfen

    Kostenloser Webspace von karpfen

    karpfen hat kostenlosen Webspace.

    Ganz vergessen, derzeit mach ich das so:

    $klartext=strip_tags($news->news_inhalt);
    $ausgabe=substr ( $klartext, 0 , 180 );


    Werde mir aber eure Codes anschauen und bedanke mich schon mal :thumb:

    EDIT: Funktioniert prima. Kann geschlossen werden. Danke!

    Beitrag zuletzt geändert: 28.10.2009 10:32:07 von karpfen
  6. karpfen schrieb:
    Bei folgendem Beispiel könnte dann die Ausgabe wie folgt aussehen, was natürlich nicht so toll ist.

    Ausgabe: Das ist eine tolle Nachricht, welche in der Vorschau erscheinen soll und zwar in gekü

    Man sieht, das letzte Wort ist abgeschnitten, deshalb würde ich nun von dort zum letzten Leerzeichen gehen und von dort an das letzte Stück abschneiden, hab aber grad keine Idee, wie das zu realisieren ist.

    Vielen Dank schonmal für Anregungen und Tipps. :biggrin:


    Regular expressions sag ich mal:
    <?php
    
    // Text bzw. String der durchsucht werden soll 
    $string = <<<EOF
    Ausgabe: Das ist eine tolle Nachricht, welche in der Vorschau erscheinen soll und zwar in gekü
    EOF;
    
    $pattern = '/(.*)\s\S+$/';
    
    if (preg_match_all($pattern, $string, $array))
    {
     $string = $array[1];
    }
    echo $string;
    ?>


    (der Code ist ungetested)

    Edit:
    Zum pattern:
    Der Ausdruck sucht nach beliebig vielen zeichen (.*) an deren ENDE($) mindestens EIN (+) zeichen vorkommt das KEIN leerzeichen (\S) ist und wo ein leerzeichen (\s) davor steht.


    http://www.regex-tester.de/uc_793_de.html
    http://www.regex-tester.de/regex_glossar.html

    Beitrag zuletzt geändert: 28.10.2009 10:44:43 von simuliertes
  7. Auf Wunsch vom Fisch geschlossen.

    ***CLOSED***
  8. 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!