Source Code for Me (s-c.me)

Allows you to paste souce code to blogs! Adapted for Twitter! Here is Search Form in case you missed your code.
Code:
Selected Language:
Show Linenumbers:
Short link for Twitter:
HTML:

HTML view:

Copy Source | Copy HTML
  1. /**
     * Ð¡ÑƒÐ¼Ð¼Ð° Ð¿Ñ€Ð¾Ð¿Ð¸ÑÑŒÑŽ
     * @author runcore
     */
  2. function num2str($inn, $stripkop=false) {
  3.     $nol = 'ноль';
  4.     $str[100]= array('','сто','двести','триста','четыреста','пятьсот','шестьсот', 'семьсот', 'восемьсот','девятьсот');
  5.     $str[11] = array('','десять','одиннадцать','двенадцать','тринадцать', 'четырнадцать','пятнадцать','шестнадцать','семнадцать', 'восемнадцать','девятнадцать','двадцать');
  6.     $str[10] = array('','десять','двадцать','тридцать','сорок','пятьдесят', 'шестьдесят','семьдесят','восемьдесят','девяносто');
  7.     $sex = array(
  8.         array('','один','два','три','четыре','пять','шесть','семь', 'восемь','девять'),// m
  9.         array('','одна','две','три','четыре','пять','шесть','семь', 'восемь','девять') // f
  10.     );
  11.     $forms = array(
  12.         array('копейка', 'копейки', 'копеек', 1), // 10^-2
  13.         array('рубль', 'рубля', 'рублей',  0), // 10^ 0
  14.         array('тысяча', 'тысячи', 'тысяч', 1), // 10^ 3
  15.         array('миллион', 'миллиона', 'миллионов',  0), // 10^ 6
  16.         array('миллиард', 'миллиарда', 'миллиардов',  0), // 10^ 9
  17.         array('триллион', 'триллиона', 'триллионов',  0), // 10^12
  18.     );
  19.     $out = $tmp = array();
  20.     // ÐŸÐ¾ÐµÑ…али!
  21.     $tmp = explode('.', str_replace(',','.', $inn));
  22.     $rub = number_format($tmp[ 0], 0,'','-');
  23.     if ($rub== 0) $out[] = $nol;
  24.     // Ð½Ð¾Ñ€Ð¼Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ ÐºÐ¾Ð¿ÐµÐµÐº
  25.     $kop = isset($tmp[1]) ? substr(str_pad($tmp[1], 2, '0', STR_PAD_RIGHT), 0,2) : '00';
  26.     $segments = explode('-', $rub);
  27.     $offset = sizeof($segments);
  28.     if ((int)$rub== 0) { // ÐµÑÐ»Ð¸ 0 Ñ€ÑƒÐ±Ð»ÐµÐ¹
  29.         $o[] = $nol;
  30.         $o[] = morph( 0, $forms[1][ 0],$forms[1][1],$forms[1][2]);
  31.     }
  32.     else {
  33.         foreach ($segments as $k=>$lev) {
  34.             $sexi= (int) $forms[$offset][3]; // Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÑÐµÐ¼ Ñ€Ð¾Ð´
  35.             $ri = (int) $lev; // Ñ‚екущий ÑÐµÐ³Ð¼ÐµÐ½Ñ‚
  36.             if ($ri== 0 && $offset>1) {// ÐµÑÐ»Ð¸ ÑÐµÐ³Ð¼ÐµÐ½Ñ‚==0 & Ð½Ðµ Ð¿Ð¾ÑÐ»ÐµÐ´Ð½Ð¸Ð¹ ÑƒÑ€Ð¾Ð²ÐµÐ½ÑŒ(там Units)
  37.                 $offset--;
  38.                 continue;
  39.             }
  40.             // Ð½Ð¾Ñ€Ð¼Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ
  41.             $ri = str_pad($ri, 3, '0', STR_PAD_LEFT);
  42.             // Ð¿Ð¾Ð»ÑƒÑ‡Ð°ÐµÐ¼ Ñ†Ð¸Ñ„ерки Ð´Ð»Ñ Ð°Ð½Ð°Ð»Ð¸Ð·Ð°
  43.             $r1 = (int)substr($ri, 0,1); //первая Ñ†Ð¸Ñ„ра
  44.             $r2 = (int)substr($ri,1,1); //вторая
  45.             $r3 = (int)substr($ri,2,1); //третья
  46.             $r22= (int)$r2.$r3; //вторая Ð¸ Ñ‚ретья
  47.             // Ñ€Ð°Ð·Ð³Ñ€ÐµÐ±Ð°ÐµÐ¼ Ð¿Ð¾Ñ€ÑÐ´ÐºÐ¸
  48.             if ($ri>99) $o[] = $str[100][$r1]; // Ð¡Ð¾Ñ‚ни
  49.             if ($r22>20) {// >20
  50.                 $o[] = $str[10][$r2];
  51.                 $o[] = $sex[ $sexi ][$r3];
  52.             }
  53.             else { // <=20
  54.                 if ($r22>9) $o[] = $str[11][$r22-9]; // 10-20
  55.                 elseif($r22> 0) $o[] = $sex[ $sexi ][$r3]; // 1-9
  56.             }
  57.             // Ð ÑƒÐ±Ð»Ð¸
  58.             $o[] = morph($ri, $forms[$offset][ 0],$forms[$offset][1],$forms[$offset][2]);
  59.             $offset--;
  60.         }
  61.     }
  62.     // ÐšÐ¾Ð¿ÐµÐ¹ÐºÐ¸
  63.     if (!$stripkop) {
  64.         $o[] = $kop;
  65.         $o[] = morph($kop,$forms[ 0][ 0],$forms[ 0][1],$forms[ 0][2]);
  66.     }
  67.     return preg_replace("/\s{2,}/",' ',implode(' ',$o));
  68. }
  69.  
  70. /**
     * Ð¡ÐºÐ»Ð¾Ð½ÑÐµÐ¼ ÑÐ»Ð¾Ð²Ð¾Ñ„орму
     */
  71. function morph($n, $f1, $f2, $f5) {
  72.     $n = abs($n) % 100;
  73.     $n1= $n % 10;
  74.     if ($n>10 && $n<20) return $f5;
  75.     if ($n1>1 && $n1<5) return $f2;
  76.     if ($n1==1) return $f1;
  77.     return $f5;
  78. }




Based on Manoli.Net's CodeFormatter. Made by Topbot (c) 2008-2012