Считаем время прочтения текста (статьи) на PHP

    Комментариев нет 473

Время прочтения статьи на PHP

На многих сайтах, которые имеют большие каталоги статей по разделам в самом начале каждого отдельного текста статьи размещена информация о примерном времени прочтения этого материала. Что делает такие сайты более информативными и удобными для пользователя. И, как раз для этого, мы с вами выясним, как посчитать время чтения статьи на PHP и реализуем функцию, которая будет считать, сколько времени потребуется читателям для ознакомления с вашим контентом. Давайте приступать.

Телеграм-канал serblog.ru

Функция подсчета слов в тексте

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

1
2
3
4
5
function str_word_count_utf8($str)
{
    $a = preg_split('/\W+/u', strip_tags($str), -1, PREG_SPLIT_NO_EMPTY);
    return count($a);
}

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

Мы уже можем посчитать общее количество слов в статье. Среднее время чтения — примерно 200 слов в минуту. Отсюда и будем отталкиваться. Для того, чтобы получить минуты, мы количество слов делим на 200. Секунды будем получать по более сложной формуле.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
function read_time_estimate($content)
{
    $word_count = str_word_count_utf8($content);
 
    // 200 - средняя скорость чтения слов в минуту
    $words_per_minute = 200;
 
    // время чтения статьи в минутах
    $minutes = floor($word_count / $words_per_minute);
    // время чтения статьи в секундах
    $seconds = floor($word_count % $words_per_minute / ($words_per_minute / 60));
 
    $str_minutes = ($minutes == 1) ? "мин." : "мин.";
    $str_seconds = ($seconds == 1) ? "сек." : "сек.";
 
    if ($minutes == 0) {
        return "{$seconds} {$str_seconds}";
    } else {
        return "{$minutes} {$str_minutes}, {$seconds} {$str_seconds}";
    }
}

Остается вывести на экран время прочтения текста статьи.

1
2
3
4
5
$post_content = 'Текст вашей статьи...';
echo '<svg width="16px" height="16px" viewBox="0 0 24 24" fill="none"  xmlns="http://www.w3
        //.org/2000/svg">
<path d="M5.06152 12C5.55362 8.05369 8.92001 5 12.9996 5C17.4179 5 20.9996 8.58172 20.9996 13C20.9996 17.4183 17.4179 21 12.9996 21H8M13 13V9M11 3H15M3 15H8M5 18H10" stroke="#333" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
</svg> ' . read_time_estimate($post_content);

Для красоты я поставил SVG иконку часов, которая символизирует время, которое будет затрачено на прочтение статьи. И выглядит это вот так:

Время прочтения статьи на PHP

Если статья небольшая и время чтения ее займет меньше минуты, то выводиться будут только секунды. Если больше минуты, тол и минуты и секунды. Если секунды вам не нужны или место на сайте не позволяет вывести все вместе, то на 19 строке можно убрать , {$seconds} {$str_seconds}

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

Любая сумма на развитие сайта

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *