Справочники, инструменты, документация

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

Функция 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 обрезки текста по словам

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); // выведет 'Северная война', без части слова 'закончилась'

Как обрезать предложение по словам

Заметка с примером PHP кода, позволяющая обрезать предложение до целого слова.

// Функция обрезки предложения
function cutString($string, $maxlen) {
  $len = (mb_strlen($string) > $maxlen)? mb_strripos(mb_substr($string, 0, $maxlen), ' ') : $maxlen;
  $cutStr = mb_substr($string, 0, $len);
  return (mb_strlen($string) > $maxlen)? $cutStr.' ...' : $cutStr;
}

Вывод функции обрезки слов, где get_the_content — любая другая функция. Переменная 100 указывает количество символов, после которых нужно сократить информацию.

echo cutString(get_the_content(), 100);

При обрезке слов никогда не использовать функцию strlen(). Она ведёт подсчет байтов в строке, а не символов. Всегда использовать mb_strlen(), которая считает количество символов. Иначе рано или поздно можно столкнуться с неожиданными результатами.

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

$text = 'Microsoft был основан Биллом Гейтсом ещё в далёком 1975 году.';

$array = explode(" ",$text); // перерабатываем строку в массив
$array = array_slice($array,0,5); // выбираем первые 5 слов-элементов
$newtext = implode(" ",$array); // массив снова перерабатываем в строку

echo $newtext;//Выведет 'Microsoft был основан Биллом Гейтсом'

Пример обрезки текста до определённой длины в качестве краткого описания к новости или посту

// уберём все html элементы:
$string = strip_tags($string);

// обрежем его на определённое количество символов:
$string = substr($string, 0, 200);

// удалим в конце текста восклицательй знак, запятую, точку или тире:
$string = rtrim($string, "!,.-");

// находим последний пробел, устраняем его и ставим троеточие:
$string = substr($string, 0, strrpos($string, ' '));
echo $string."…";

Пример использования stristr()

$email = 'USER@EXAMPLE.com';
echo stristr($email, 'e'); // выводит ER@EXAMPLE.com
echo stristr($email, 'e', true); // выводит US

Проверка на вхождение строки

$string = 'Hello World!';
if(stristr($string, 'earth') === FALSE) {
 echo '"earth" не найдена в строке';
}
// выводит: "earth" не найдена в строке