/**
* Рассчитывает время чтения текста
*
* @param string $text Исходный текст статьи
* @param int $wordsPerMinute Скорость чтения (слов в минуту)
*
* @return string Отформатированная строка с временем чтения
*
* // Пример использования
* $articleContent = '<h1>Заголовок статьи</h1><p>Это пример содержания вашей статьи...</p>';
* $readingTime = calculateReadingTime($articleContent);
*
* Echo "Время чтения: {$readingTime}";
*/
public static function calculateReadingTime(string $text, int $wordsPerMinute = 200): string {
// Удаляем HTML-теги и лишние пробелы
$cleanText = trim(strip_tags($text));
// Если текст пустой
if (empty($cleanText)) {
return "меньше минуты";
}
// Подсчет слов (учитываем кириллицу, латиницу и цифры)
$words = preg_split('/\s+/u', $cleanText, -1, PREG_SPLIT_NO_EMPTY);
$wordCount = count($words);
// Расчет минут
$minutes = (int) max(1, ceil($wordCount / $wordsPerMinute));
// Склонение слова "минута"
/*$lastDigit = $minutes % 10;
$lastTwoDigits = $minutes % 100;
if ($lastTwoDigits >= 11 && $lastTwoDigits <= 19) {
$form = 'минут';
} elseif ($lastDigit === 1) {
$form = 'минута';
} elseif ($lastDigit >= 2 && $lastDigit <= 4) {
$form = 'минуты';
} else {
$form = 'минут';
}*/
// Или
$form = 'мин';
return "{$minutes} {$form}";
}