Как обрезать строку не разрезая слово на PHP

Форум для тех кто начинает осваивать язык php.
Аватара пользователя
Scorpion
Сообщения: 35
Благодарил (а): 6 раз
Поблагодарили: 3 раза

Как обрезать строку не разрезая слово на PHP

Сообщение Scorpion » Пн июл 04, 2016 3:07 pm

Доброго времени суток! Подскажите, как можно обрезать текст, чтобы не разрезать слово? То есть, чтобы последнее слово осталось целым. Сейчас обрезаю строку по количеству символов:

Код: Выделить всё

$text = substr($text, 160);

В конце обработанного текста получается только начало слова, а это не хорошо.
Заранее спасибо.
Реклама
cefp
Сообщения: 333
Поблагодарили: 3 раза

Re: Как обрезать строку не разрезая слово на PHP

Сообщение cefp » Пн июл 04, 2016 3:56 pm

Можно обрезать полученную строку до последнего пробела:

Код: Выделить всё

$text substr($text0strrpos($text' ')); 
d o h o d - s - n u l y a .ru - идеи бизнеса.
Аватара пользователя
Slash
Администратор
Сообщения: 2029
Поблагодарили: 62 раза

Re: Как обрезать строку не разрезая слово на PHP

Сообщение Slash » Пн июл 04, 2016 4:00 pm

Scorpion, с кириллицей работаете? Если да, то лучше использовать mb_* функции:

Код: Выделить всё

$text = mb_substr($text, 160);

Найти пробел после слово, в котором находится символ, по который надо обрезать, можно так:

Код: Выделить всё

$number = mb_strpos($text, ' ', 160); 

Это поможет нам определить в каком именно месте надо "резать" строку. Теперь, когда нам известно местонахождение пробела, можем вырезать:

Код: Выделить всё

$text = mb_substr($text, 0, $number); 

Переменная $text - обрезанная строка.

Код: Выделить всё

$text   = 'Доброго времени суток! Подскажите, как можно обрезать текст, чтобы не разрезать слово? То есть, чтобы последнее слово осталось целым. Сейчас обрезаю строку по количеству символов';
$number = mb_strpos($text, ' ', 160);
$text   = mb_substr($text, 0, $number);
echo 'Количество символов в обрезанной строке: ' . $number . '<br />Текст строки: ' $text

cefp, получается ваш код откидывает последнее слово, а если в строке будет намного больше символов до последнего пробела, чем 160, скажем 2500.
Аватара пользователя
Scorpion
Сообщения: 35
Благодарил (а): 6 раз
Поблагодарили: 3 раза

Re: Как обрезать строку не разрезая слово на PHP

Сообщение Scorpion » Чт июл 07, 2016 8:39 am

Slash, спасибо, то что надо!
cefp писал(а):Можно обрезать полученную строку до последнего пробела

Зачем?
Аватара пользователя
Slash
Администратор
Сообщения: 2029
Поблагодарили: 62 раза

Re: Как обрезать строку не разрезая слово на PHP

Сообщение Slash » Сб авг 06, 2016 6:56 am

Варианты решений выше могут превышать заданное количество символов. Если заданное количество превышать ни в коем случаи нельзя, могу предложить такой вариант:

Код: Выделить всё

$text mb_substr($text0mb_strrpos(mb_substr($text0160), ' ')); 

Вернуться в «PHP»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость