Функция 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 выполняет те же самые задачи, что и 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'
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."…";
$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" не найдена в строке