Сейчас: 13:45:08   23-го апреля 2024 г.
14
31

Скрипт обрезки строк на PHP

На многих сайта Вы наверняка уже встречали анонсы новостей или каких-либо других материалов. Все они, как правило, содержат несколько первых слов из самой новости и ссылки, перейдя по которой можно ознакомиться с полным текстом новости.


Неопытные вебмастера для получения подобных анонсов используют обычно только одну стандартную функцию PHP - substr(). В результате после обрезания нужной строки до необходимого количество символов они останавливаются и считают, что дело сделано. Но при использовании одной лишь только функции substr() всплывают недостатки:

- строка может быть обрезана посреди слова, что не есть хорошо;

- полученная строка может оканчиваться на какой-нибудь символ (тире, двоеточие и т.д.).


Так вот, чтобы избежать перечисленных выше недостатков, в данной теме мы хотим предоставить Вам скрипт для правильной обрезки текстовых строк при помощи PHP.


Предположим, что имеется вот такая текстовая строка: "Демонстрация работы скрипта правильной обрезки текста!!! Тестируем работу."


А теперь давайте просто обрежем имеющуюся у нас текстовую строку до длины в 60 символов. В результате получится: "Демонстрация работы скрипта правильной обрезки текста!!! Тес"


В случае же использования нашего скрипта, получится вот такая текстовая строка: "Демонстрация работы скрипта правильной обрезки текста..."


Согласитесь, что второй пример выглядит гораздо предпочтительнее, чем первый, т.к. обрезать строку посреди слова не правильно.


Для того чтобы обрезать текст не посреди слов и при этом учитывать, чтобы в конце строки не было символов кроме букв и цифр, можно воспользоваться нашей функцией truncation():

PHP код:
<?php
function truncation($str$length){
$str substr($str0$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 код:
<?php
$text 
"Демонстрация работы скрипта правильной обрезки текста!!! Тестируем работу.";

echo 
truncation($text60);
?>

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

Дата создания: 00:23:46 08.06.2014 г.
Посещений: 9637 раз(а).

Комментарии посетителей (4 шт.):
Magadin
0
# 3083
(10:51:33  16.03.2016 г.)

Добрый день!
Подскажите, пожалуйста, как добавить к этой функции truncation еще и удаление из текста телефонные номера и Емейл адреса. Буду очень благодарен.
Спасибо!
Ответить

Administrator
1
# 3087
(20:00:29  16.03.2016 г.)

При помощи регулярных выражений, но тут придется помучаться, т.к. телефон может быть записан в разных форматах или словами вообще.
Ответить

Игорь
2
# 3958
(09:15:44  20.06.2017 г.)

Добрый день! Подскажите, пожалуйста, как сделать, чтобы при наведении курсора на обрезанный текст, появлялась вторая (обрезанная) часть этого текста.
Ответить

Administrator
2
# 3965
(16:59:31  22.06.2017 г.)

Могу посоветовать Вам взамен данного скрипта воспользоваться скриптом спойлера.
Ответить

Закрыть
Ваше имя:
694 + 13 =
Добавить комментарий:
Ваше имя:
694 + 13 =

Перед публикацией все комментарии проходят обязательную модерацию!

Если Вы хотите задать какой-либо вопрос, то сделайте это на нашем форуме.
Таким образом, Вы сможете быстрее получить ответ на интересующий Вас вопрос.
Посетителей онлайн: 5

Какой браузер Вы используете?