Понадобилось недавно выводить «очеловеченный» текст, чтобы не было казусов вроде: «У вас есть 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 новых сообщения