WebTutorСклонение слов в зависимости от стоящих рядом с ними цифр

Склонение слов в зависимости от стоящих рядом с ними цифр

Очень важный момент при программировании магазина — правильно склонять слова, стоящие рядом с цифрами. Хотя это вжно не только для магазинов, а и для любого более менее серьезного сайта. Не профессионально будет выглядеть сайт, если на нем будут записи вида: 1 товаров, 2 товаров. Нужно сделать выведение окончания слова так: 1 товар, 2 товара, 5 товаров.

Такую задацу можно решить с помощью языка программирования PHP и других тоже, но в данной статье разберем реализацию именно на PHP. В английском языке нет такой проблемы, так как есть только 2 варианта склонения, 1 product, 5 products. Но в русском же языке 3 варианта, и тут необходимо подумать. Сейчас размерем функцию, которая склоняет слова в зависимости от цифры, стоящей рядом.

Пример кода

/*
 * $num число, от которого будет зависеть форма слова
 * $form_for_1 первая форма слова, например Продукт
 * $form_for_2 вторая форма слова - Продукта
 * $form_for_5 третья форма множественного числа слова - Продуктов
 */
function custom_word_changer($num, $form_for_1, $form_for_2, $form_for_5){
	$num = abs($num) % 100; // берем число по модулю делением без остатка на 100 и сбрасываем сотни (делим на 100, а остаток присваиваем переменной $num)
	$num_x = $num % 10; // с десятками делаем то же самое, сбрасываем десятки и записываем в новую переменную
	if ($num > 10 && $num < 20) // если число принадлежит отрезку [11;19] return $form_for_5; if ($num_x > 1 && $num_x < 5) // иначе если число оканчивается на 2,3,4
		return $form_for_2;
	if ($num_x == 1) // иначе если оканчивается на 1
		return $form_for_1;
	return $form_for_5;
}

Чтобы использовать такую функцию — просто добавьте ее в файл functions.php, который расположен в корневой директории вашей темы.

Для применения функции в проекте, нужно вызвать ее таким образом:

$product = 5; // это переменная, стоящая перед словом, которое нужно склонять
echo $product . ' ' . custom_word_changer($product, 'товар', 'товара', 'товаров'); // в результате получится "5 товаров"

Посмотрите еще функцию склонения слов на JavaScript.

Просмотров: 14

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Технологии WEB

    CMS

      Расширения

        Сервисы