Очень часто веб-разработчики ленятся и вместо, скажем, надписи «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.'…';
}