Хозяйке на заметку:
function ru_numeral ($howmany, $s0, $s1, $s2)
{
// Возвращает, в зависимости от $howmany, правильную форму слова:
// ru_numeral(10, 'ив', 'ива', 'ивы') == 'ив'
// ru_numeral(21, 'ив', 'ива', 'ивы') == 'ива'
// ru_numeral(32, 'ив', 'ива', 'ивы') == 'ивы'
$c = $howmany % 100; // Оставляем 2 последних цифры
// Особые варианты: x11..x14
if (($c >= 5) && ($c <= 20)) return $s0;
$c %= 10; // Оставляем последнюю цифру
switch ($c)
{
case 1:
return $s1;
case 2:
case 3:
case 4:
return $s2;
default:
return $s0;
} // switch
} // function ru_numeral
Где-то валялось
то же самое на перле.