@draaax

Как полностью обрезать не полное слово в конце строки?

Здравствуйте! Возможно ли если строка > 50 символов полностью обрезать не полное слово в конце?

$length = 50;
$postText = 'Доброго времени суток! Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.';

function createTitle(string $postText): string {
    global $length;
    
    $welcomeWords = [
        'Доброго времени суток!',  
        'Доброе утро!'
    ];
    $postText = str_replace($welcomeWords, '', $postText);
    
    //получаем позицию первого вхождения
    $pos = strpos($postText, "\n");
    
    if (!$pos) {
        $pos = $length + 1;
    }
    
    $postTitle = trim(mb_substr($postText, 0, $pos, 'utf-8'));
    
    if(mb_strlen($postTitle, 'utf-8') >= $length ) {
    	$postTitle = trim(mb_substr($postText, 0, $length - 3, 'utf-8')) . '..';
    }
    
    return $postTitle;
}

echo createTitle($postText);


Сейчас:
Lorem ipsum dolor sit amet, consectetur adipis..

Хотелось бы:
Lorem ipsum dolor sit amet, consectetur..
  • Вопрос задан
  • 62 просмотра
Пригласить эксперта
Ответы на вопрос 1
rim89
@rim89
программист-велосипедист
Если грубо делать, то просто регулярской или explode разбить по пробелам строку и вернуть слова из массива, до того как новая строка достигнет заданной длинны
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы