Forums / National / Russian / Зоопарк с окончаниями

Boss
#918 2008-09-04 17:07
Что-нибудь типа:
function declension($digit,$expr,$onlyword=false)
{
	if(is_array($expr))
	{
	        if(empty($expr[2])) $expr[2]=$expr[1];
        	$i=preg_replace('/[^0-9]+/s','',$digit)%100; //intval не всегда корректно работает
	        if($onlyword) $digit='';
	        if($i>=5 && $i<=20) $res=$digit.' '.$expr[2];
        	else
	        {
        	        $i%=10;
                	if($i==1) $res=$digit.' '.$expr[0];
	                elseif($i>=2 && $i<=4) $res=$digit.' '.$expr[1];
        	        else $res=$digit.' '.$expr[2];
	        }
	}
	else
	{
	$res = $digit.' '.$expr;
	}

        return trim($res);
}