PHP Lange Textausgabe nach Leerzeichen begrenzen

raven16

Lieutenant
Registriert
Nov. 2008
Beiträge
580
Hi (noch ein letztes mal für heute),

Ich möchte an manchen Stellen zu lange Texte kürzen.

es soll dann so aussehen:

Code:
Laaaaaanger Text[...]

Ich möchte den Text auf Beispielsweise auf 50 Leerzeichen begrenzen bevor dann der Rest des Textes mit [...] ersetzt wird...

Hab auch schon rumgesucht aber keine leicht verständliche und brauchbare Lösung gefunden
Was dabei rauskam war ne begrenzung auf zeichen aber dann wird meistens ein wort mittendrin abgebrochen...deswegen möchte ich das nach leerzeichen begrenzen

lg
 
Hmm

Da müsstest du was zu basteln, kenne keine Funktion die das automatisch macht. ( Vielleicht gibt es ja eine? )

folgende Funktion verwenden:

substr()
strrpos()


könnte dann so aussehen:

PHP:
$text = "Dieser Text wird nach dem 50sten Zeichen abgeschnitten, es werden keine Wörter zerstört. ";

$text = substr($text,0,50);

echo "<br />";

$text = substr($text,0,strrpos($text," "));

echo $text;
Zu beachten ist folgendes: Es können auch nur 40 oder 45 Zeichen sein, da nach einem Leerzeichen getrennt wird, also das Wort abgeschnitten liegt im 50er Zeichen Bereich dieses wird ignoriert und komplett entfernt

Sollte deinen Wünschen entsprechen.

lg
 
Zuletzt bearbeitet:
Jo danke... das ist natürlich auch ne lösung wenn nur das letzte Wort nicht abgeschnitten wird :)
habs jetzt so gemacht

PHP:
$text = $obj_quicksearch->probtext;
$text = htmlentities($text);
$text = stripslashes($text);
$text = str_replace('{',' ', str_replace('}',' ',str_replace('%',' ',$text)));  
if(strlen($text)>300) $dots = '(...)';
$text = substr($text,0,300);
$text = substr($text,0,strrpos($text," "));
$text_filtered = nl2br($text.$dots);

hab noch die strlen bedingung hinzugefügt, damit der am Ende des gekürzten Textes ein (...) macht

lg
 
Zuletzt bearbeitet:
Jops, sieht sauber aus :)

Werde ich mich auch gleich mal dran bereichern ;)
Sehe gerade bei mir hatte ich das vor Wochen aus der DB mit LEFT(*, 200) AS text gelöst, da schneidet er es einfach ab ..

Hat uns beiden geholfen :)
 
Smarty hat einen Modifier für dein Vorhaben und macht das so:

PHP:
function smarty_modifier_truncate($string, $length = 80, $etc = '...', $break_words = false)
{
    if ($length == 0)
        return '';

    if (strlen($string) > $length) {
        $length -= strlen($etc);    
        if (!$break_words)
        $string = preg_replace('/\s+?(\S+)?$/', '', substr($string, 0, $length+1));
      
        return substr($string, 0, $length).$etc;
    } else
        return $string;
}


Mögliche Aufrufe:

PHP:
smarty_modifier_truncate($string)
smarty_modifier_truncate($string, 80)
smarty_modifier_truncate($string, 80, '...')
smarty_modifier_truncate($string, 80, '...', true)

In deinem Fall smarty_modifier_truncate($string, 50, '[...]')
 
Zuletzt bearbeitet:
Zurück
Oben