PHP - ВІДМІНЮВАННЯ ІМЕННИКІВ
Функція відмінювання як українських, російських так і англійських іменників
function declension($digit, $expr, $onlyword = false)
{
if (!is_array($expr)) $expr = array_filter(explode(' ', $expr));
if (empty($expr[2])) $expr[2] = $expr[1];
$i = preg_replace('/[^0-9]+/s', '', $digit) % 100;
if ($onlyword) $digit = '';
if ($i >= 5 && $i <= 20) $res = $digit . ' ' . $expr[2];
else {
$i %= 10;
if ($i <= 0) {
return false;
} elseif ($i == 1) {
$res = $digit . ' ' . $expr[0];
} elseif ($i >= 2 && $i <= 4) {
$res = $digit . ' ' . $expr[1];
} else
$res = $digit . ' ' . $expr[2];
}
return trim($res);
}
$comments = 138;
// Для української
$result = declension($comments, 'Опублікований Опубліковано', true). ' '. declension($comments, 'коментар коментаря коментарів');
// Для російської
$result = declension($comments, 'Опубликован Опубликовано', true). ' '. declension($comments, 'комментарий комментария комментариев');
// Для англійської
$result = declension($comments, 'Published Posted', true). ' '. declension($comments, 'comment comments');
print_r($result);