[#] Deklinacja rzeczownika w funkcji licznika

( Ostatnio zmieniony pon., 09/06/2008 - 19:09 )
 

Funcka DLI

// deklinacja licznika
function dli($x, $a, $b, $c) {
  if ($x == 1) return $a;
  elseif ( ($x%10 > 1) && ($x%10 < 5)   && !(($x%100 >= 10) && ($x%100 <= 21)) ) return $x .' '. $b;
  return $x .' '. $c;
}

// przykład użycia
print dli(512, 'bajt', 'bajty', 'bajtów');
// wynik: 512 bajtów

Przykład użycia

function kiedy($ts) {
  $ts = time() - $ts;

  // sekundy
  if ($ts < 60) return dli($ts, 'sekundę', 'sekundy', 'sekund') .' temu';
  $ts = round($ts / 60);

  // minuty
  if ($ts < 60) return dli($ts, 'minutę', 'minuty', 'minut') .' temu';
  $ts = round($ts / 60);

  // godziny
  if ($ts < 24) return dli($ts, 'godzinę', 'godziny', 'godzin') .' temu';
  $ts = round($ts / 24);

  // dni
  if ($ts < 7) return dli($ts, 'dzień', 'dni', 'dni') .' temu';

  // tygodnie
  if (($ts / 7) < 4) return dli(round($ts / 7), 'tydzień', 'tygodnie', 'tygodni') .' temu';
  $ts = round($ts / 30.5);

  // miesiace
  if ($ts < 12) return dli($ts, 'miesiąc', 'miesiące', 'miesięcy') .' temu';
  $ts = round($ts / 12);

  // lata
  return dli($ts, 'rok', 'lata', 'lat') .' temu';
}

Zwracane wartości są zgodne z poprawną polszczyzną (minutę temu, 2 minuty temu, 5 minut temu) .

Źródło: http://blog.i64.pl/BlogPio

Twoja ocena: Brak Średnio: 4 (3 głosy)

Dodaj nową odpowiedź

Informacja:

Osoby zamieszczające wypowiedzi naruszające prawo lub prawem chronione dobra osób trzecich, mogą ponieść z tego tytułu odpowiedzialność karną lub cywilną. Upewnij się, że twoja wypowiedź nie godzi w niczyje mienie.

  • Internal paths in single or double quotes, written as "internal:node/99", for example, are replaced with the appropriate absolute URL or path. Paths to files in single or double quotes, written as "files:somefile.ext", for example, are replaced with the appropriate URL that can be used to download the file.
  • Adresy internetowe są automatycznie zamieniane w odnośniki, które można kliknąć.
  • Dozwolone znaczniki HTML: <strong> <blockquote> <code>
  • Znaki końca linii i akapitu dodawane są automatycznie.

Więcej informacji na temat formatowania

Łapirobot
Proszę odpowiedzieć
d
A
Y
b
s
K
5
f
2
H
Enter the code without spaces and pay attention to upper/lower case.