Данила Лучинский6.0
IT-рукоприкладыватель
+7 921 308-88-38 ICQ 344-00-443 Сообщение  
dan@luchinsky.ru danluchinsky Заказать сайт
Кодоводство

Размер файлов по-русски

13 ноября 2011 г.

Функция принимает количество байт и отдает на его основе размер примерно в таком же виде, как в ОС Windows. function ru_size($bytes) { if(!function_exists('num_word')) { function num_word($n,$a,$b,$c,$m=1){$n=sprintf("%.0f",$n);$x=abs($n>9?mb_substr($n,-2):$n);return($m?($m==2?number_format($n,0,' ',' '):$n).' ':'').(($x%=100)>9&&$x<20||($x%=10)>4||$x==0?$c:($x==1?$a:$b));} } if(!$bytes) return '0 байт'; elseif($bytes<1000) return num_word($bytes,'байт','байта','байт'); elseif($bytes<1012) return '0,98 КБ'; elseif($bytes<1024) return '0,99 КБ'; elseif($bytes<1048576) { $temp = round($bytes/1024,2); if($temp<10) return str_replace('.',',',round($temp,2)).' КБ'; elseif($temp<100) return str_replace('.',',',round($temp,1)).' КБ'; elseif($temp<1000) return round($temp).' КБ'; elseif($temp<1012) return '0,98 МБ'; else return '0,99 МБ'; } elseif($bytes<1073741824) { $temp = round($bytes/1048576,2); if($temp<10) return str_replace('.',',',round($temp,2)).' МБ'; elseif($temp<100) return str_replace('.',',',round($temp,1)).' МБ'; elseif($temp<1000) return round($temp).' МБ'; elseif($temp<1012) return '0,98 ГБ'; else return '0,99 ГБ'; } elseif($bytes<1099511627776) { $temp = round($bytes/1073741824,2); if($temp<10) return str_replace('.',',',round($temp,2)).' ГБ'; elseif($temp<100) return str_replace('.',',',round($temp,1)).' ГБ'; elseif($temp<1000) return round($temp).' ГБ'; elseif($temp<1012) return '0,98 ТБ'; else return '0,99 ТБ'; } else { $temp = round($bytes/1099511627776,2); if($temp<10) return str_replace('.',',',round($temp,2)).' ТБ'; elseif($temp<100) return str_replace('.',',',round($temp,1)).' ТБ'; else return round($temp).' ТБ'; } } Дробную часть у чисел отделяет запятая, как и принято в русском языке. Словоформы байт и байта подбираются правильно. Если значение приближено к большей единице, возможны варианты 0,98 или 0,99. Рабочий диапазон единиц — от байта до терабайта.
Метки:  PHP