Изобретаем велосипед: форма слова в зависимости от числа
Posted in Разное with tags PHP on 13 Май 2008 by theifishПонадобилось недавно выводить “очеловеченный” текст, чтобы не было казусов вроде: “У вас есть 1 непрочитанных сообщений”. Поверхностый поиск в Google не дал быстрого результата, поэтому я решил, что иногда быстрее самому сделать велосипед, тем более такой маленький. Вот что получилось:
function rus_wordform($var, $form1, $form2, $form3) {
$lastnum = $var%100;
if ($lastnum>4 && $lastnum<21) {
echo $form3;
} else {
$lastnum = $var%10;
if ($lastnum == 1) {
echo $form1;
} elseif ($lastnum>1 && $lastnum<5) {
echo $form2;
} else {
echo $form3;
}
}
}
$var - это соответсвенно само число,
$form1 - это первая форма слова (например: сообщение),
$form2 - это вторая форма слова (например: сообщения),
$form3 - это третья форма слова (например: сообщений).
Соответственно,
$i = 53;
echo “У вас есть $i нов”.rus_wordform($i, ‘ое’, ‘ых’, ‘ых’);.” сообщени”.rus_wordform($i, ‘е’, ‘я’, ‘й’);
выдаст:
У вас есть 53 новых сообщения

