@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..
  • Вопрос задан
  • 55 просмотров
Пригласить эксперта
Ответы на вопрос 1
rim89
@rim89
программист-велосипедист
Если грубо делать, то просто регулярской или explode разбить по пробелам строку и вернуть слова из массива, до того как новая строка достигнет заданной длинны
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
18 сент. 2020, в 17:52
1000 руб./за проект
18 сент. 2020, в 17:49
500 руб./в час
18 сент. 2020, в 17:24
180 руб./за проект