Заметки программиста

Каждый будний день, ровно в 9, я пишу о себе, о своей работе и о технологиях web программирования123

Полезные 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');

This website uses IntenseDebate comments, but they are not currently loaded because either your browser doesn't support JavaScript, or they didn't load fast enough.

Comments

There are 5 comments for this post.

  1. Arty V on Март 15, 2009 8:21 пп

    Похоже ты в аську не получил, но короче вот: http://translate.sourceforge.net/wiki/l10n/pluralforms — функции для множественных числе

  2. dust on Март 15, 2009 8:30 пп

    Отличное собрание, спасибо! Как там все расписано шикарно )

  3. Алексей on Апрель 2, 2009 9:16 дп

    Человекопонятная русская дата глючит, буду переделывать

  4. Антонов Андрей on Апрель 2, 2009 2:59 пп

    А в чем выражается? Если пределаете, покажите код :)

  5. Множественное число на PHP — Заметки программиста on Май 5, 2009 9:16 дп

    [...] дело писал целую функцию, вот здесь можно посмотреть, там куча строк. Но это уже не [...]

Write a Comment

Let me know what you think?