Guest User

Untitled

a guest
Jun 22nd, 2018
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.23 KB | None | 0 0
  1. switch((string)$count{позиции_последних_двух_символов}) {
  2. case
  3. ...
  4. }
  5.  
  6. function declension($digit,$expr,$onlyword=false)
  7. {
  8. if(!is_array($expr)) $expr = array_filter(explode(' ', $expr));
  9. if(empty($expr[2])) $expr[2]=$expr[1];
  10. $i=preg_replace('/[^0-9]+/s','',$digit)%100; //intval не всегда корректно работает
  11. if($onlyword) $digit='';
  12. if($i>=5 && $i<=20) $res=$digit.' '.$expr[2];
  13. else
  14. {
  15. $i%=10;
  16. if($i==1) $res=$digit.' '.$expr[0];
  17. elseif($i>=2 && $i<=4) $res=$digit.' '.$expr[1];
  18. else $res=$digit.' '.$expr[2];
  19. }
  20. return trim($res);
  21. }
  22.  
  23. echo 'Мне уже '.declension('<b>20</b>','год года лет').'!';
  24.  
  25. function declension($n, $words) {
  26. is_array($words) or $words = array_slice(func_get_args(), 1, 3);
  27. 19 < $n = abs($n) % 100 and $n %= 10;
  28.  
  29. if ($n == 1) {
  30. return reset($words);
  31. }
  32.  
  33. if ($n && $n < 5) {
  34. return $words[min(1, count($words) - 1)];
  35. }
  36.  
  37. return end($words);
  38. }
  39.  
  40. echo sprintf(
  41. "Мне %u %s. I'm Jesus!",
  42. $count = date('Y'),
  43. declension($count, 'год', 'года', 'лет')
  44. ), PHP_EOL;
Add Comment
Please, Sign In to add comment