Cклонение слов после чисел

Данная функция склоняет слова после числа.

  1. function num_decline( $number, $titles, $show_number = true ){
  2.  
  3. if( is_string( $titles ) ){
  4. $titles = preg_split( '/, */', $titles );
  5. }
  6.  
  7. // когда указано 2 элемента
  8. if( empty( $titles[2] ) ){
  9. $titles[2] = $titles[1];
  10. }
  11.  
  12. $cases = [ 2, 0, 1, 1, 1, 2 ];
  13.  
  14. $intnum = abs( (int) strip_tags( $number ) );
  15.  
  16. $title_index = ( $intnum % 100 > 4 && $intnum % 100 < 20 )
  17. ? 2
  18. : $cases[ min( $intnum % 10, 5 ) ];
  19.  
  20. return ( $show_number ? "$number " : '' ) . $titles[ $title_index ];
  21. }


// Примеры вызова:
  1. num_decline( $num, 'книга,книги,книг' );
  2. num_decline( $num, 'book,books');
  3. num_decline( $num, [ 'книга','книги','книг' ]);
  4. num_decline( $num, [ 'book','books' ]);

  1. * @param int|string $number Число после которого будет слово. Можно указать число в HTML тегах.
  2. * @param string|array $titles Варианты склонения или первое слово для кратного 1.
  3. * @param bool $show_number Указываем тут 00, когда не нужно выводить само число.
  4. *
  5. * @return string Например: 1 книга, 2 книги, 10 книг.


  26.01.24 / 10:45 | PHP |   46 | 0   0