Блог старого компьютера

Блог старого компьютера


Главная PHP Обрезка текста по словам PHP

Обрезка текста по словам PHP

19.10.2012 10:27 Администратор PHP
Печать PDF
Понадобилось мне сегодня обрезать текст не нарушив целостность слов. Для этого я по быстрому набросал php функцию которую хочу выложить сюда, думаю новичкам данная функция пригодится. Лично я когда только начинал писать на php для того чтоб обрезать текст по словам я изобретал какой то немыслимый велосипед в котором циклом перебирал слова, сейчас конечно я говорю об этом с улыбкой. Кстати на сколько я помню помоему так у меня ни чего и не вышло. Перейдем неприменно к функции.

Данная функция обрезает текст в кодировке windows-1251, для того чтоб функция обрезала текст в utf-8 необходимо заменить функцию substr на mb_substr и желательно чтоб избежать возможных проблем указать и encoding (смотри информацию по функции в справочнике).

И так моя функция:

function cut_string($string, $length){
$string = substr($string, 0, $length); // обрезаем строку по указанному $length
$pos = strrpos($string, ' '); // определяем позиция последнего пробела
$string = substr($string, 0, $pos); // обрезаем переменную по определенно выше позиции
return $string;
}
$text ='Будем обрезать данную строку не нарушив целостность слов. Обрезка текста по словам';
echo cut_string($text, 22);

Как видно функция довольно маленькая. Для того чтоб было понятно как работает функция я расставил комментарии к строчкам. Вообщем то на этом все.

Дополнение:

Так как оказалось что просто подписав к функция префикс mb недостаточно, необходимо так же указать кодировку. Прикладываю функцию для обрезки по словам текста в UTF-8

function cut_string($string, $length){
$string = mb_substr($string, 0, $length,'UTF-8');
$pos = mb_strrpos($string, ' ', 'UTF-8');
$string = mb_substr($string, 0, $pos, 'UTF-8');
return $string;
}

Комментарии  

 
0 #2 Павел 25.10.2013 02:34
mb_internal_enc oding("UTF-8");
function cutOnWord($stri ng,$length){
$string = mb_substr($stri ng, 0, $length+1);
$pos = mb_strrpos($str ing, ' ');
$string = mb_substr($stri ng, 0, $pos);
return $string;
}
function cutOnLetter($st ring,$length){
$string = mb_substr($stri ng, 0, $length);
return $string;
}
Цитировать
 
 
0 #1 Павел 25.10.2013 02:32
:lol:
Допиши:) есть проблема при обрезании какраз на последний символ... будет правельнее
$string = substr($string, 0, $length+1); // обрезаем строку по указанному $length

так как мы можем так оставить пробел, а затем уже его обрезать
Цитировать
 

Добавить комментарий


Защитный код
Обновить

Поиск

Голосование

Что Вы думаете на счет битрикса?
 

Все материалы раздела