Очень часто веб-разработчики ленятся и вместо, скажем, надписи «3 дня» пишут «дней: 3». Действительно, зачем заморачиваться и программировать еще и функцию подбора окончания слова? Я решил упростить Вам эту задачу и представляю свои функции, которые использую в проектах.
Функция подбора окончания слова
function num2word($num, $words) { $num = $num % 100; if ($num > 19) { $num = $num % 10; } switch ($num) { case 1: { return($words[0]); } case 2: case 3: case 4: { return($words[1]); } default: { return($words[2]); } } }
Пример использования:
// $days - количество дней за <?=$days?> <?=num2word($days, array('день', 'дня', 'дней'));?> /* * $days=2: за 2 дня * $days=5: за 5 дней * ... */
Функция вывода месяца по его номеру
function getRusMonth($month){ if($month > 12 || $month < 1) return FALSE; $aMonth = array('января', 'февраля', 'марта', 'апреля', 'мая', 'июня', 'июля', 'августа', 'сентября', 'октября', 'ноября', 'декабря'); return $aMonth[$month - 1]; }
Пример использования:
// $month - номер месяца // $day_of_month - число месяца <?=$day_of_month?> <?=getRusMonth($month);?> /* * $day_of_month=1; $month=1: 1 января * $day_of_month=5; $month=3: 5 марта * ... */
Функция для вывода дня недели
/* * русский день недели * пример: getRusWeekDay(5) */ function getRusWeekDay($day){ if($day > 7 || $day < 1) return FALSE; $aMonth = array('ПН', 'ВТ', 'СР', 'ЧТ', 'ПТ', 'СБ', 'ВС'); return $aMonth[$day - 1]; }
Иногда нам требуется реализовать вывод анонса статьи. Проблемы появляются тогда, когда в вёрстке количество символов анонса — фиксировано и заканчивается многоточием.
Для реализации этой задачи можно воспользоваться следующей заготовкой.
Функция для создания анонсов с многоточием
/* * функция для создания анонсов отзывов с многоточием * $text - необрезанный текст анонса * $length - длинна текста, после которого текст анонса * обрезается и ставится многоточие */ function createAnons($text, $length, $clearTags = true){ $text = trim($text); if ($clearTags === true) $text = strip_tags($text); if ($length <= 0 || strlen($text) <= $length) return $text; $out = mb_substr($text, 0, $length); $pos = mb_strrpos($out, ' '); if ($pos) $out = mb_substr($out, 0, $pos); return $out.'…'; }