Скрипт обрезки строк на PHP
На многих сайта Вы наверняка уже встречали анонсы новостей или каких-либо других материалов. Все они, как правило, содержат несколько первых слов из самой новости и ссылки, перейдя по которой можно ознакомиться с полным текстом новости.
Неопытные вебмастера для получения подобных анонсов используют обычно только одну стандартную функцию PHP - substr().
В результате после обрезания нужной строки до необходимого количество символов они останавливаются и считают, что дело сделано.
Но при использовании одной лишь только функции substr() всплывают недостатки:
- строка может быть обрезана посреди слова, что не есть хорошо;
- полученная строка может оканчиваться на какой-нибудь символ (тире, двоеточие и т.д.).
Так вот, чтобы избежать перечисленных выше недостатков, в данной теме мы хотим предоставить Вам скрипт для правильной обрезки текстовых строк при помощи PHP.
Предположим, что имеется вот такая текстовая строка: "Демонстрация работы скрипта правильной обрезки текста!!! Тестируем работу."
А теперь давайте просто обрежем имеющуюся у нас текстовую строку до длины в 60 символов. В результате получится: "Демонстрация работы скрипта правильной обрезки текста!!! Тес"
В случае же использования нашего скрипта, получится вот такая текстовая строка: "Демонстрация работы скрипта правильной обрезки текста..."
Согласитесь, что второй пример выглядит гораздо предпочтительнее, чем первый, т.к. обрезать строку посреди слова не правильно.
Для того чтобы обрезать текст не посреди слов и при этом учитывать, чтобы в конце строки не было символов кроме букв и цифр, можно воспользоваться нашей функцией truncation():
<?php
function truncation($str, $length){
$str = substr($str, 0, $length-2); //Обрезаем до заданной длины
$words = explode(" ", $str); //Разбиваем по словам
array_splice($words,-1); //Удаляем последнее слово
$last = array_pop($words); //Получаем последнее слово
for ($i=1; $i<strlen($last); $i++) {
//Ищем и удаляем в конце последнего слова все кроме букв и цифр
if (preg_match('/\W$/',substr($last,-1,1))) $last = substr($last,0,strlen($last)-1);
else break;
}
return implode(" ", $words).' '.$last.'...';
}
?>
Вызывать функцию truncation() следует следующим образом:
<?php
$text = "Демонстрация работы скрипта правильной обрезки текста!!! Тестируем работу.";
echo truncation($text, 60);
?>
В результате использования данного небольшого скрипта (функции) Вы всегда сможете обрезать нужные Вам строки до нужной длины и не беспокоиться о том, что строка может быть обрезана посередине слова или заканчиваться каким-нибудь неуместным в данном случае символом.
Перед публикацией все комментарии проходят обязательную модерацию!
Если Вы хотите задать какой-либо вопрос, то сделайте это на нашем форуме.
Таким образом, Вы сможете быстрее получить ответ на интересующий Вас вопрос.
Подскажите, пожалуйста, как добавить к этой функции truncation еще и удаление из текста телефонные номера и Емейл адреса. Буду очень благодарен.
Спасибо!