Этот сайт не наркоманов. Это сайт программистов.

Добро пожаловать на Пыху!

Логин:
Пароль:
 

Нет прописки? Зарегистрируйся!

Новости

Пыха переехала на новый сервер, ура!

Краснодарское время: 25 Май, 2012, 07:34:38

Страниц: [1] 2
Печать
Автор Тема: PHP Функция для расчета правильного склонения множественного числа  (Прочитано 1351 раз)
0 Пользователей и 1 Гость смотрят эту тему.
fgets2    ↓ 
11 Апрель, 2011, 10:03:17
НЕ ХУЕТА! ХУЕТА!

Карма: 0
Сообщений: 4
Сила слова: 0

PHP
        /**
     * Функция rmany
     * Служит для выбора правильного склонения множественного числа
     *
     * @param string $nominative - 1 яблоко
     * @param string $quantitative_ablative - 2 яблока
     * @param string $accusative - 10 яблок
     * @param integer $count - количество элементов
     *
     * Пример вызова:
     * echo rmany('яблоко', 'яблока', 'яблок', 86); // результат "яблок"
     *
     * @return string
     */

    function rmany ($nominative, $quantitative_ablative, $accusative, $count)
    {   
        /* дополняем число нулями и забираем последние две цифры */
        $count = intval(substr(sprintf("%010d", $count), -2, 2));
        /* выполняем расчёт и возвращаем нужный падеж */
        $ln = substr(strval($count), -1);
        if (($ln === 0) or (in_array($ln, range(5,9))) or (in_array($count, range(10,20)))) {
            return $accusative;
        } elseif (in_array($ln, range(2,4)) {
            return $quantitative_ablative;
        } else {
            return $nominative;
        }
    }
Спустя 3 минуты 43 секунды добавил

PHP
    /**
     * Функция rmany
     * Служит для выбора правильного склонения множественного числа
     *
     * @param string $nominative - 1 яблоко
     * @param string $quantitative_ablative - 2 яблока
     * @param string $accusative - 10 яблок
     * @param integer $count - количество элементов
     *
     * Пример вызова:
     * echo rmany('яблоко', 'яблока', 'яблок', 86); // результат "яблок"
     *
     * @return string
     */

    function rmany ($nominative, $quantitative_ablative, $accusative, $count)
    {   
        /* дополняем число нулями и забираем последние две цифры */
        $count = intval(substr(sprintf("%010d", $count), -2, 2));
        /* выполняем расчёт и возвращаем нужный падеж */
        $ln = substr(strval($count), -1);
        if (($ln === 0) or (in_array($ln, range(5,9))) or (in_array($count, range(10,20)))) {
            return $accusative;
        } elseif (in_array($ln, range(2,4))) {
            return $quantitative_ablative;
        } else {
            return $nominative;
        }
    }

фикс, скобочку нечаянно удалил при копировании :)
Записан
Stasovsky    ↓ 
11 Апрель, 2011, 10:03:25 , спустя 8 секунд
НЕ ХУЕТА! ХУЕТА!

Сенсей XD
Группа: Джедаи

Карма: 54
Сообщений: 3653
Сила слова: 1.48

http://pyha.ru/forum/topic/4993.msg111072#msg111072
Записан
md5    ↓ 
11 Апрель, 2011, 10:04:21 , спустя 56 секунд
НЕ ХУЕТА! ХУЕТА!

выезд, апартаменты, массаж, стриптиз, подружки, дорого
Группа: в ухо

Карма: не нужна
Сообщений: 10495
Сила слова: 1.19

PHP
<?php
function smarty_modifier_strend($num, $endings = '')
{
    list($s1,$s2,$s3) = explode(',', $endings);
    $num = abs($num);
    $num = $num % 100;
   
    if (($num > 4) && ($num < 21)) {
        return $s3;
    }
    $num = $num % 10;
    if (($num == 0) || ($num > 4)) {
        return $s3;
    }
    if ($num == 1) {
        return $s1;
    }
   
    return $s2;
}

HTML
{$count} яблок{$count|strend:"о,а,"}

автор функции вроде vasa_c)
сто лет назад где-то на пихе увидел и себе в плагины смарти/квики захуярил
Записан

8: Undefined variable: str
Файл: /home/pyha/pyha.ru/forum/bbcode/Xbb/Tags/Man.php
Строка: 18
adw0rd: мудень блять, я уже фиксить стал эту фигню :)
md5: вуахахахаха
Stasovsky    ↓ 
11 Апрель, 2011, 10:05:16 , спустя 55 секунд
НЕ ХУЕТА! ХУЕТА!

Сенсей XD
Группа: Джедаи

Карма: 54
Сообщений: 3653
Сила слова: 1.48

фикс, скобочку нечаянно удалил при копировании :)
мама не учила не копировать через Ctrl+X?))
Записан
fgets2    ↓ 
11 Апрель, 2011, 10:06:51 , спустя 1 минуту 35 секунд
НЕ ХУЕТА! ХУЕТА!

Карма: 0
Сообщений: 4
Сила слова: 0

PHP
    /**
     * Функция rmany
     * Служит для выбора правильного склонения множественного числа
     *
     * @param string $nominative - 1 яблоко
     * @param string $quantitative_ablative - 2 яблока
     * @param string $accusative - 10 яблок
     * @param integer $count - количество элементов
     *
     * Пример вызова:
     * echo rmany('яблоко', 'яблока', 'яблок', 86); // результат "яблок"
     *
     * @return string
     */

    function rmany ($nominative, $quantitative_ablative, $accusative, $count)
    {   
        /* дополняем число нулями и забираем последние две цифры */
        $count = intval(substr(sprintf("%010d", $count), -2, 2));
        /* выполняем расчёт и возвращаем нужный падеж */
        $ln = intval(substr(strval($count), -1));
        if (($ln === 0) or (in_array($ln, range(5,9))) or (in_array($count, range(10,20)))) {
            return $accusative;
        } elseif (in_array($ln, range(2,4))) {
            return $quantitative_ablative;
        } else {
            return $nominative;
        }
    }
и еще один фикс, забыл к числу привести $ln)))
Записан
phpdude    ↓ 
11 Апрель, 2011, 10:07:29 , спустя 38 секунд
НЕ ХУЕТА! ХУЕТА!

я - ЭМО
Группа: в ухо

Карма: 344
Сообщений: д-о-х-у-я!
Сила слова: 1.65

fgets2, вы с братом отменные гавнокодеры! после школя обязательно иди в политех на тракториста! программист пока не очень получился
Записан

забанен. могу забанить других, пишите в личку
BEER. Helping ugly people have sex since 1862.
fgets2    ↓ 
11 Апрель, 2011, 10:07:49 , спустя 20 секунд
НЕ ХУЕТА! ХУЕТА!

Карма: 0
Сообщений: 4
Сила слова: 0


PHP
<?php
function smarty_modifier_strend($num, $endings = '')
{
    list($s1,$s2,$s3) = explode(',', $endings);
    $num = abs($num);
    $num = $num % 100;
   
    if (($num > 4) && ($num < 21)) {
        return $s3;
    }
    $num = $num % 10;
    if (($num == 0) || ($num > 4)) {
        return $s3;
    }
    if ($num == 1) {
        return $s1;
    }
   
    return $s2;
}

HTML
{$count} яблок{$count|strend:"о,а,"}

автор функции вроде vasa_c)
сто лет назад где-то на пихе увидел и себе в плагины смарти/квики захуярил

а если будут линейки, шторы?
Записан
Stasovsky    ↓ 
11 Апрель, 2011, 10:09:01 , спустя 1 минуту 12 секунд
НЕ ХУЕТА! ХУЕТА!

Сенсей XD
Группа: Джедаи

Карма: 54
Сообщений: 3653
Сила слова: 1.48

а если будут линейки, шторы?
а если будут пальто? XDD
Записан
phpdude    ↓ 
11 Апрель, 2011, 10:13:13 , спустя 4 минуты 12 секунд
НЕ ХУЕТА! ХУЕТА!

я - ЭМО
Группа: в ухо

Карма: 344
Сообщений: 20790
Сила слова: 1.65

а если будут линейки, шторы?
{$count} {$count|strend:"яблоко,линейка,штора"}
Спустя 10 секунд добавил
говорю же логики у вас не хватает чуток ...
Записан

забанен. могу забанить других, пишите в личку
BEER. Helping ugly people have sex since 1862.
md5    ↓ 
11 Апрель, 2011, 10:18:43 , спустя 5 минут 30 секунд
НЕ ХУЕТА! ХУЕТА!

выезд, апартаменты, массаж, стриптиз, подружки, дорого
Группа: в ухо

Карма: не нужна
Сообщений: 10495
Сила слова: 1.19

а если будут линейки, шторы?
ты не поверишь)
 
{$count} лине{$count|strend:"йка,йки,ек"}
{$count} штор{$count|strend:"а,ы,"}
Записан

8: Undefined variable: str
Файл: /home/pyha/pyha.ru/forum/bbcode/Xbb/Tags/Man.php
Строка: 18
adw0rd: мудень блять, я уже фиксить стал эту фигню :)
md5: вуахахахаха
SpartakuS    ↓ 
12 Апрель, 2011, 12:19:20 , спустя 2 часа 37 секунд
НЕ ХУЕТА! ХУЕТА!

Группа: Адекваты

Карма: 32
Сообщений: 2444
Сила слова: 1.31

Дуд, ты аккуратней... Вдвоем ведь могут и отпиздить)))
Записан


цска ебаное гавно.
phpdude    ↓ 
12 Апрель, 2011, 12:25:04 , спустя 5 минут 44 секунды
НЕ ХУЕТА! ХУЕТА!

я - ЭМО
Группа: в ухо

Карма: 344
Сообщений: д-о-х-у-я!
Сила слова: 1.65

SpartakuS, а я убегу хули :D
Записан

забанен. могу забанить других, пишите в личку
BEER. Helping ugly people have sex since 1862.
kostyl    ↓ 
12 Апрель, 2011, 12:35:24 , спустя 10 минут 20 секунд
НЕ ХУЕТА! ХУЕТА!

занедельный антипаттерн
Группа: Джедаи

Карма: 60
Сообщений: 3522
Сила слова: 1.7

васяц охуенен
Записан

качество жизни обратно пропорционально количеству лени
artoodetoo    ↓ 
12 Апрель, 2011, 06:30:56 , спустя 5 часов 55 минут 32 секунды
НЕ ХУЕТА! ХУЕТА!

с особым цинизмом
Группа: в ухо

Карма: 124
Сообщений: 3805
Сила слова: 3.26

сколько можно переизобретать ngettext ?
Записан
master    ↓ 
12 Апрель, 2011, 09:37:40 , спустя 3 часа 6 минут 44 секунды
НЕ ХУЕТА! ХУЕТА!

Квадратов сколько видишь ты?
Группа: Джедаи

Карма: 44
Сообщений: 2080
Сила слова: 2.12

artoodetoo,  ngettext для русских как-то не очень
Записан

Страниц: [1] 2
Печать
 

Перейти в:  

Этот топик скрыли: NRG, adw0rd, Sinkler