Сегодня на сайтах часто можно увидеть информацию о приблизительном времени, необходимом для чтения статьи . Это очень удобно, когда известно сколько приблизительно времени займет чтение статьи. Вместе с цепляющим заголовком, приблизительное время чтение статьи может увеличить заинтересованность и общее время нахожде...

Скрипт, показывающий сколько времени займет чтение статьи

Сегодня на сайтах часто можно увидеть информацию о приблизительном времени, необходимом для чтения статьи. Это очень удобно, когда известно сколько приблизительно времени займет чтение статьи. Вместе с цепляющим заголовком, приблизительное время чтение статьи может увеличить заинтересованность и общее время нахождения посетителя на сайте.

Вот скрипт:

<?php

// подсчет количество слов в utf строке
function str_word_count_utf8($str) {
    $a = preg_split('/\W+/u', $str, -1, PREG_SPLIT_NO_EMPTY);
    return count($a);
}

/**
 * Возвращает приблизительное время чтения статьи в строку
 *
 * @param  string $content содержимое статьи
 * @return string          приблизительное время чтения
 */
function read_time_estimate($content) {
    // очищаем содержимое от тегов
    // подсчитываем количество слов
    $word_count = str_word_count_utf8(strip_tags($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}";
    }
}

Добавляем где-то в начале статьи следующий код:

<div class = "estimated-time">
    <?php $post_content = "..."; // содержимое статьи ?>
    print "Приблизительное время чтения: " . read_time_estimate($post_content);
</div>