Да показва определен брой символи, но без да реже думи

vinsbg

Registered
Здравейте,

Използвам тази функция за съкращаване на текст.
Код:
            function getExcerpt($str, $startPos=0, $maxLength=150) {
                if(strlen($str) > $maxLength) {
                    $excerpt   = substr($str, $startPos, $maxLength-3);
                    $lastSpace = strrpos($excerpt, ' ');
                    $excerpt   = substr($excerpt, 0, $lastSpace);
                    $excerpt  .= '...';
                } else {
                    $excerpt = $str;
                }

                return $excerpt;
            }
Някой може ли да помогне как ще трябва да се промени, за да не реже думите. В смисъл сега, както е на 150 символа и ако 150-тия символ е първата буква от цяла дума то го реже там. Възможно ли е да съкрати на последната цяла дума?
 
Направи проверка дали е символ (или е нов ред, спейс, табулация) и ако е символ да среже след/преди него (т.е. до следващия/предишния спейс или точка)
 
Пробвай нещо от сорта
PHP:
function cut_text($text,$length = 150,$direction = "down") {
	while ( !in_array(mb_substr($text,$length,1,'UTF-8'),array(' ')) ) {
		$direction == "down" ? $length-- : $length++;
	} 
	return mb_substr($text,0,$length,'UTF-8');
}
 
Replace каза:
PHP:
function cut_text($text,$length = 150,$direction = "down") {
	while ( !in_array(mb_substr($text,$length,1,'UTF-8'),array(' ')) ) {
		$direction == "down" ? $length-- : $length++;
	} 
	return mb_substr($text,0,$length,'UTF-8');
}
Благодаря! :?:
 

Back
Горе