аватар Автор: Сергей Касаткин | 10 апреля 2013 17:27

Статьи / PHP /

Как обрезать текст строки средствами PHP?


Обрезаем текст с помощью функции substr PHP


Функция substr ( $string, $start, $length ) , где $string - это переменная с текстом, $start - это символ, с которого начинается отсчёт (за первый символ берётся 0), а $length - это количество символов выделенного текста.

$text = "Example and text";

$first = substr($text,0,6); // Показывает 6 символов начиная с 0-ого, самого первого
echo $first; // выведет 'Example'. 

$second = substr($text,8,3); // Показывает 3 символа начиная с 8-ого
echo $second; // выведет 'and'

Если не указать параметр Количество символов (2 цифра), то функция выведет все оставшиеся символы

$text = "Example and text";

$third = substr($text,8); // Покажет ВСЕ символы начиная с 8-ого
echo $third; // выведет 'and text'


Обрезаем Русский текст с помощью функции mb_substr PHP


Функция mb_substr выполняет те же самые задачи, что и substr, но также способна обрабатывать многобайтные кодировки. Поэтому в случае с русским текстом Вам пригодится именно mb_substr. Работает так же

$text = "Пример текста";

$first = mb_substr($text,0,6,'UTF-8'); // Показывает 6 символов начиная с 0-ого, самого первого
// Внимание! Указывайте кодировку исходного текста! В данном случае utf-8
echo $first; //выведет 'Пример'

$second = mb_substr($text,7,6,'UTF-8'); // Показывает 6 символов начиная с 7-ого
echo $second; // выведет 'текста'

Обратите внимание на то, что в случае с кириллицей (русский текст) лучше указывать кодировку в конце функции. В примере использован самый популярный вариант - UTF-8

Обрезаем текст с конца


Если Вы хотите обрезать текст с конца, то для этого укажем отрицательное число для переменной, обозначающей с какого символа начинается вычленение текста

$text = "Sprite and Fanta";

$first = substr($text,-6,5); // Показывает 5 символов начиная с 6-ого с конца
echo $first; //выведет 'Fant'


После обрезки ещё и дописываем текст


После обрезки переменной с текстом дописываем в конец дополнительный текст

$example = "Text text text text";

$example = substr($example,0,9); // Показывает 9 символов начиная с 0-ого, самого первого
$example .= " more...";
echo $example; //выведет 'Text text more...'

Можно наоборот, запись сделать в начале, а потом уже обрезанный текст

$text = "Uncle ";

$example = "George and Michael";
$example = substr($example,0,6); // Показывает 6 символов начиная с 0-ого, самого первого
$text .= $example;
echo $text; //выведет 'Uncle George'


Обрезка текста до первого пробела


$text = 'Hello world!';
echo substr($text, 0, strpos($text, ' ' )); // Выведет 'Hello'


Готовая функция PHP обрезки текста по Словам PHP


function cut($string, $length){
$string = mb_substr($string, 0, $length,'UTF-8'); // обрезаем и работаем со всеми кодировками и указываем исходную кодировку
$position = mb_strrpos($string, ' ', 'UTF-8'); // определение позиции последнего пробела. Именно по нему и разделяем слова
$string = mb_substr($string, 0, $position, 'UTF-8'); // Обрезаем переменную по позиции
return $string;
}

$text = 'Северная война закончилась в 1721 году';
echo cut($text, 17); // выведет 'Северная война', без части слова 'закончилась'


Можно обрезать по словам через массив...


$text = 'Microsoft был основан Биллом Гейтсом ещё в далёком 1975 году.';
 
$array = explode(" ",$text); // перерабатываем строку в массив
$array = array_slice($array,0,5); // выбираем первые 5 слов-элементов
$newtext = implode(" ",$array); // массив снова перерабатываем в строку
 
echo $newtext;//Выведет 'Microsoft был основан Биллом Гейтсом'
 



Похожие статьи


Комментарии к статье (vk.com)