Полезные PHP функции
Сентябрь 15, 2008
Для обсуждения и дополнения, можете заглянуть на форум DustWeb.
Множественное число
/**
* Множественное число
*
* @param int $howmuch
* @param array $input Например: [0] - комментариев, [1] - комментарий, [2] - комментария
* @return string
*/
function Plural($howmuch,$input) {
$howmuch = (int)$howmuch;
$l2 = substr($howmuch,-2);
$l1 = substr($howmuch,-1);
if($l2 > 10 && $l2 < 20) return $input[0];
else
switch ($l1) {
case 0: return $input[0]; break;
case 1: return $input[1]; break;
case 2: case 3: case 4: return $input[2]; break;
default: return $input[0]; break;
}
return false;
}
echo Plural(41, array('комментариев', 'комментарий', 'комментария'));
Человекопонятная русская дата
/**
* Человекопонятная русская дата (и время)
*
* @param string $date_input Что-то хоть как-то похожее на дату
* @param bool $time Показывать время
* @return string
*/
function date_smart($date_input, $time=false) {
$monthes = array(
'', 'января', 'февраля', 'марта', 'апреля', 'мая', 'июня',
'июля', 'августа', 'сентября', 'октября', 'ноября', 'декабря'
);
$date = strtotime($date_input);
//Время
if($time) $time = ' G:i';
else $time = '';
//Сегодня, вчера, завтра
if(date('Y') == date('Y',$date)) {
if(date('z') == date('z', $date)) {
$result_date = date('Сегодня'.$time, $date);
} elseif(date('z') == date('z',mktime(0,0,0,date('n',$date),date('j',$date)+1,date('Y',$date)))) {
$result_date = date('Вчера'.$time, $date);
} elseif(date('z') == date('z',mktime(0,0,0,date('n',$date),date('j',$date)-1,date('Y',$date)))) {
$result_date = date('Завтра'.$time, $date);
}
if(isset($result_date)) return $result_date;
}
//Месяца
$month = $monthes[date('n',$date)];
//Года
if(date('Y') != date('Y', $date)) $year = 'Y г.';
else $year = '';
$result_date = date('j '.$month.' '.$year.$time, $date);
return $result_date;
}
echo date_smart('2008-09-14 23:34:59');









Похоже ты в аську не получил, но короче вот: http://translate.sourceforge.net/wiki/l10n/pluralforms — функции для множественных числе
Отличное собрание, спасибо! Как там все расписано шикарно )
Человекопонятная русская дата глючит, буду переделывать
А в чем выражается? Если пределаете, покажите код
[...] дело писал целую функцию, вот здесь можно посмотреть, там куча строк. Но это уже не [...]