Обрезка текста средствами php

Опубликовано 2012.02.11

Обрезать текст можно по-разному. Самая простая функция-это substr. Этой функции нужно передать 3 аргумента. Первый-сама строка,второй-с какого символа начать обрезать текст(нумерация начинается с нуля), и третий-сколько символов обрезать.
  1. $a = 'English Message';
  2. $b = substr($a, 0, 7);
  3. echo $b;//Выведет 'English'
  4. $c = substr($a,8,7);
  5. echo $c;//Выведет 'Message'
С русским текстом такая функция не всегда прокатит, поэтому нужно использовать mb_substr. Работает она точно также.
  1. $a = 'Сама строка,которую нужно обрезать.';
  2. $b = mb_substr($a, 0, 4);
  3. echo $b;//Выведет 'Сама'
  4. $c = mb_substr($a, 5, 6);
  5. echo $c;//Выведет 'строка'
Если мы хотим добавить многоточие в том случае, когда строка обрезана - то нужно сравнить длину строки с длинной обрезаемого текста.
  1. $a = 'Сама строка,которую нужно обрезать.';
  2. $lenght = 5;
  3. $b = mb_substr($a, 0, $lenght);
  4. if (mb_strlen($a) > $lenght) {
  5. $b .= '...';
  6. }
  7. echo $b;
Где $lenght - длинна обрезаемого текста. Или просто сравнить исходную строку и обрезанную. Но это частный случай.
  1. $a = 'Сама строка,которую нужно обрезать.';
  2. $b = mb_substr($a, 0, 10);
  3. if ($a != $b) {
  4. $b .= '...';
  5. }
  6. echo $b;
Чтобы обрезать по пробелу, то есть взять например 5 первых слов-то строку следует разделить по пробелам и взять первые 5 элементов.Вот так:
  1. $str='Этот текст имеет большое количество
  2. пробелов и состоит из нескольких слов';
  3.  
  4. //разбиваем на массив
  5. $arr_str = explode(" ", $str);
  6. //берем первые 6 элементов
  7. $arr = array_slice($arr_str, 0, 6);
  8. //превращаем в строку
  9. $new_str = implode(" ", $arr);
  10.  
  11. // Если необходимо добавить многоточие
  12. if (count($arr_str) > 6) {
  13. $new_str .= '...';
  14. }
  15.  
  16. echo $new_str;//Выведет 'Этот текст имеет большое количество пробелов и...'
Ну и чтоб просто добавить в конце любой строки многоточие-можно дописать точки так:
  1. $str = 'My string';
  2. $str .= '...';
  3. echo $str;//Выведет 'My string...'