Наверняка замечали на сайтах надпись типа "время чтения: 3 минуты" рядом с заголовком статьи. Штука простая, но полезная — человек сразу понимает, сколько времени займёт материал, и решает, читать сейчас или отложить. Сегодня разберём готовый PHP-сниппет, который делает такой расчёт автоматически.
static function timechten($content) { $words_per_minute = 150; // слов в минуту $img_per_minute = 12; // секунд на одно изображение $img_numb = preg_match_all("~<img~i", $content, $result_numb); $plain_text = strip_tags($content); $words_count = count(preg_split("/\s+/", trim($plain_text))); $text_read = round($words_count / $words_per_minute, 1); $img_read = floor((count($result_numb[0]) * $img_per_minute) / 60); $all_read = $img_read + $text_read; if ($all_read < 1) { $all_read = 1; } return self::decl_of_numb(round($all_read), array(" минуту", " минуты", " минут")); }Функция timechten принимает на вход HTML-контент статьи и возвращает строку вида "5 минут" или "1 минута" — с правильным окончанием слова.
Логика простая и понятная:
Сначала функция считает картинки в тексте через preg_match_all по тегу <img>. Считается, что на просмотр одной картинки читатель тратит 12 секунд — это среднее время, чтобы взглянуть на иллюстрацию и вернуться к тексту.
Дальше убираем все HTML-теги через strip_tags, чтобы остался чистый текст без разметки. Разбиваем текст на слова через preg_split по пробельным символам и считаем их количество.
Скорость чтения берётся усреднённая — 150 слов в минуту. Это довольно комфортный темп для беглого чтения статьи, не слишком быстрый, не слишком медленный.
Затем время на текст и время на картинки складываются, округляются, и если получилось меньше минуты — принудительно ставится 1 минута, чтобы не было забавного "0 минут".
Отдельного внимания заслуживает вызов self::decl_of_numb() — это функция склонения числительных, которая подставляет правильное окончание: минута, минуты или минут, в зависимости от итогового числа.
Такой расчёт времени чтения — не просто красивая фишка. Он реально влияет на поведенческие факторы: пользователь видит адекватную оценку и с большей вероятностью останется на странице, если время небольшое, или заранее настроится на длинный материал. Для блогов, новостных порталов и статейных разделов интернет-магазинов это удобный инструмент под рукой, который легко воткнуть в шаблон вывода статьи.
Использовать функцию просто: передаёте в неё HTML-содержимое статьи, а на выходе получаете готовую строку для вставки рядом с заголовком или датой публикации.
Мы используем файлы cookie для улучшения вашего опыта на нашем сайте. Прочтите наше соглашение о конфиденциальности для получения дополнительной информации.