Php plural forms of

Saved searches

Use saved searches to filter your results more quickly

You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.

Pluralization library for PHP

License

mjackson/plural

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Sign In Required

Please sign in to use Codespaces.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching Xcode

If nothing happens, download Xcode and try again.

Launching Visual Studio Code

Your codespace will open once ready.

There was a problem preparing your codespace, please try again.

Latest commit

Git stats

Files

Failed to load latest commit information.

README.markdown

Plural is a library that provides natural language pluralization functions for PHP. The library currently supports the following languages:

However, Plural can easily be extended to support any language. If your language is not supported, you are encouraged to contribute a rules file to the project.

plural('dog'); # dogs plural('matrix'); # matrices plural('mouse'); # mice plural('person'); # people plural('sheep'); # sheep 

Plural uses the PHPUnit unit testing framework to test the code. In order to run the tests, do the following from the project root directory:

Plural requires PHP version 5 or greater.

Plural is released under the terms of the MIT license. Please read the LICENSE file for further information.

About

Pluralization library for PHP

Источник

Простейшая функция склонения слов после числительных

На WordPress-сайтах, как правило, информация о количестве комментариев выглядит текстом вида комментариев: 21 . Более красиво это выглядело бы так: 21 комментарий . WordPress, естественно, не учитывает особенности русского языка, когда окончание слова после числа меняется в зависимости от этого числа. Я предлагаю вашему вниманию простейшую PHP-функцию, которая решает данную задачу. Покажу 2 варианта этой функции.

Вариант 1

 function plural_form($number, $after) < $cases = array (2, 0, 1, 1, 1, 2); echo $number.' '.$after[ ($number%100>4 && $number%100

Вариант 2

Когда нужен текст вида опубликован 21 комментарий . Т.е. в данном случае склоняется слово и перед числом, и после числа. В файле functions.php темы вставляем функцию:

 function plural_form($number,$before,$after) < $cases = array(2,0,1,1,1,2); echo $before[($number%100>4 && $number%100<20)? 2: $cases[min($number%10, 5)]].' '.$number.' '.$after[($number%100>4 && $number%100

Смотрите также

Комментарии (19)

Спасибо за функцию.
Но возник вопрос, как быть если при отсутствии комментариев выводилось не «0 комментариев», а «Нет комментариев»?

Здравствуйте! Подскажите пожалуйста, как склонить выражение:
— если одна рубрика, то «Опубликовано в рубрике»;
— если рубрик несколько, то «Опубликовано в рубриках». Буду признателен за помощь.

echo ($number ? 'Опубликовано в рубриках' :'Опубликовано в рубрике');

Незачем строить конструкции из свитчей без надобности.
Теперь перейдем к самой функции склонения.
Вот тут: (Извиняюсь конечно)

function plural_form($number,$before,$after) < $cases = array(2,0,1,1,1,2); echo $before[($number%100>4 && $number%100<20)? 2: $cases[min($number%10, 5)]].' '.$number.' '.$after[($number%100>4 && $number%100

Но это бред сивой кобылы.
Достаточно просто переписать нормально функцию например вот так:
Это функция моя просто название поставил ваше.

 function plural_form($n, $w, $t = false) < $c = array(2, 0, 1, 1, 1, 2); return (!$t ? $n.' ' : '').$t[ ($n % 100 >4 && $n % 100
 echo plural_form($count,array('опубликован','опубликовано','опубликовано'),1).' '.plural_form($count, array('комментарий','комментария','комментариев')); 

Тем самым немного изменив функцию мы убиваем сразу несколько зайцев.
1. Нам больше не надо изменять функцию. Так как она подойдет для всего.
2. Мы расширили функционал сайта. И немного уменьшили нагрузку.(Хотя для Wp давно забило о наблюдении за нагрузкой)

Добрый день. А как все это можно преобразовать в вордпресовский шорткод? У меня есть шорткод, который выводит количество записей в категории:

/* Шорткод кол-ва записей */ function kol_zap($atts) < extract(shortcode_atts(array( "id" =>'' ), $atts)); $post_count = get_category($id)->category_count; $cat_name = get_category($id)->name; $cat_slug = get_category($id)->slug; return ''.$post_count.''; > add_shortcode('kolvo', 'kol_zap'); 

Доработал вашу функцию =)
Теперь есть все проверки, проще задать текст в переменной и можно его отключать.

  else < $cases = array(2,0,1,1,1,2); if ($before <>0) 4 && $number%100 <20)? 2: $cases[min($number%10, 5)]].' ';>echo $number; if ($after <> 0) 4 && $number%100 <20)? 2: $cases[min($number%10, 5)]];>> > $anynumber = 55; // число которое надо описать $anytextformbefore = array('продан','продано','продано'); //если указать значение 0 вместо массива, то текст не выводится $anytextformafter = array('билет','билета','билетов'); $anytextformifzero = "билетов нет"; plural_form($anynumber, $anytextformbefore, $anytextformafter, $anytextformifzero); ?> 
  else < $retval = ""; $cases = array(2,0,1,1,1,2); if ($before <>0) 4 && $number%100 <20)? 2: $cases[min($number%10, 5)]].' ';>$retval .= $number; if ($after <> 0) 4 && $number%100 <20)? 2: $cases[min($number%10, 5)]];>return $retval; > > $anynumber = 55; // число которое надо описать $anytextformbefore = array('продан','продано','продано'); //если указать значение 0 вместо массива, то текст не выводится $anytextformafter = array('билет','билета','билетов'); $anytextformifzero = "билетов нет"; // результат в переменной $strtext = plural_form($anynumber, $anytextformbefore, $anytextformafter, $anytextformifzero); echo $strtext; ?> 

Здавствуйте! Использовал вашу функцию, был доволен, но столкнулся с такой проблемой. При поиске нашлось 15 материалов и выдало такую ошибку:
По Вашему запросу
Notice (8): Undefined offset: 2 [APP\View\Helper\SearchingHelper.php, line 10] 15 ответов :
вызываю так

 echo plural_form(count($search_res), ['найден', 'найдено'], ['ответ', 'ответа', 'ответов']) 

Здравствуйте, а как использовать для склонения поисковых запросов? Пример: Найдено (найден) NN поисковых запроса, запросов или запрос.
Код из двух вариантов отображения ниже:

Источник

How to Pluralize Words with PHP

There’s a good chance you’ve seen it before (and possibly authored it), it looks something like this “You have 1 new messages” or “There are 10 user(s) logged in”. What you end up with is something that’s either incorrect or something like looks a bit amateurish. To fix this, we just need a bit of logic of course 😉 All you need to do is check how many we have and output the word accordingly:

echo 'You have ' . $new . ' new ' . ($new == 1 ? 'message' : 'messages'); // a slightly shorter version: echo 'You have ' . $new . ' new message' . ($new == 1 ? '' : 's'); 

This gets cumbersome so most of us resort to writing our own helper function that accomplishes this. Fortunately, PHP actually has a function that can accomplish this:

echo 'There ' . ngettext('is', 'are', $online) . ' ' . $online . ' ' . ngettext('user', 'users', $online) . ' logged in'; 

ngettext() takes 3 arguments, the singular version of a word, the plural version and the integer value to use to determine which to use.

Both of these are very simple examples on how to pluralize a word and can easily be used to handle complex plural words like mice or octopi. If you’re looking for more complex solution where you can simply pass in a word and number and get the plural back, check out Paul Osman’s PHP Pluralize Method.

Good stuff? Want more?

100% Fresh, Grade A Content, Never Spam.

About Josh

Husband. Father. Pug dad. Musician. Founder of Holiday API, Head of Engineering and Emoji Specialist at Mailshake, and author of the best damn Lorem Ipsum Library for PHP.

Источник

Читайте также:  Php открыть страницу модально
Оцените статью