Войти через VK Войти через FB Войти через Google Войти через Яндекс
Поиск по сайту
Склонение слов: рубля, рублей
Сейчас на сайте 2 гостей и 3 новостей
Смешно звучит, правда? А ведь такие уродливые сочетания встречаются на очень многих сайтах. И если в английском языке достаточно написать что-то типа day(s), byte(s) и это будет смотреться вполне нормально, то в русском языке в конструкциях "число + слово" обязательно придется учитывать склонения. Безумные извраты типа "гостя(ей)" и "новость(ей)" я даже не рассматриваю, за такое надо лишать доступа к компьютеру навсегда.
Чтобы писать по-русски можно использовать следующую универсальную функцию:
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]); }
}
}
Параметры вызова: $num - число, $words - массив склонений нужного слова. Как формируется массив вы можете посмотреть на примерах.
// Гостей
$num1=2;
$words1=Array("гость", "гостя", "гостей");
// Новостей
$num2=3;
$words2=Array("новость", "новости", "новостей");
// Написать по-русски
echo "Сейчас на сайте ";
echo $num1." ".num2word($num1,$words1); // сколько гостей
echo " и ";
echo $num2." ".num2word($num2,$words2); // сколько новостей
Результат работы скрипта:
Чтобы было удобнее формировать массивы со склонениями, запомните ряд чисел 1-2-5, а потом мысленно подставляйте их в массив: (один "рубль", два "рубля", пять "рублей") или (одна "новость", две "новости", пять "новостей").
Автор: ManHunter www.manhunter.ru
Смотрите также сколонение слов с использованием Яндекс.API
Смотрите также склонятор с учетом морфологии русского языка
.
Прокомментировать/Отблагодарить