ea-Geiercode
[ class tree: ea-Geier ] [ index: ea-Geier ] [ all elements ]

Source for file numbers.inc.php

Documentation is available at numbers.inc.php

  1. <?php 
  2. /**
  3.  * php functions for number handling
  4.  *
  5.  * LICENSE:
  6.  * This program is free software; you can redistribute it and/or modify
  7.  * it under the terms of the GNU General Public License as published by
  8.  * the Free Software Foundation; either version 2 of the License, or
  9.  * (at your option) any later version.
  10.  * This program is distributed in the hope that it will be useful,
  11.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  12.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.     See the
  13.  * GNU General Public License for more details.
  14.  * You should have received a copy of the GNU General Public License along
  15.  * with this program; if not, write to the Free Software Foundation, Inc.,
  16.  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  17.  *
  18.  * @package       ea-Geier
  19.  * @subpackage code
  20.  * @author       m2mtech <tech@m2m.at>
  21.  * @copyright  2007 m2m server software gmbh
  22.  * @license       http://www.gnu.org/licenses/gpl.html GNU General Public License Version 2
  23.  * @version       $Id: numbers.inc.php 133 2007-08-24 13:59:14Z m2mtech $
  24.  * @link       http://www.ea-geier.at/
  25.  */
  26.  
  27. /**
  28.  * generates php native number format (dot)
  29.  *
  30.  * @param    string/float    number
  31.  * @param    integer            decimal precission
  32.  * @return    boolean/string    false / formated number
  33.  */
  34. function makeDot($number$newDecimals false
  35.     static $decimals 2;
  36.     if ($newDecimals$decimals $newDecimals;
  37.     
  38.     $match array();
  39.     $pattern '/(-?\d*)[\.\,]?(\d{0,' $decimals '})(\d?)/';
  40.     if (!preg_match($pattern$number$match)) return false;    
  41.     
  42.     $a = (integer) $match[1];
  43.     $b = (integer) $match[2];
  44.     $l strlen($match[2]);
  45.     if (($b 0&& ($l $decimals)) {
  46.         $l $decimals $l;
  47.         for ($i 1$i <= $l$i++$b *= 10;        
  48.     }
  49.     $c = (integer) $match[3];
  50.     
  51.     if ($c 4$b++;
  52.     
  53.     $max 10;
  54.     for ($i 1$i $decimals$i++$max *= 10;
  55.     if ($b >= $max{
  56.         $b -= $max;
  57.         $a++;
  58.     }
  59.  
  60.     $return $a '.';
  61.  
  62.     $max /= 10;
  63.  
  64.     while ($max $b && $max 1{
  65.         $max /= 10;
  66.         $return .= '0';
  67.     }
  68.     $return .= $b;
  69.  
  70.     return number_format($return$decimals'.''');
  71. }
  72.  
  73. /**
  74.  * generates php native number format (dot)
  75.  *
  76.  * @param    string/float    number
  77.  * @return    boolean/string    false / formated number
  78.  */
  79. function makeDotOnly($number$newDecimals false
  80.     static $decimals 2;
  81.     if ($newDecimals$decimals $newDecimals;
  82.     
  83.     $match array();
  84.     $pattern '/(-?\d*)[\.\,]?(\d*)/';
  85.     if (!preg_match($pattern$number$match)) return false;    
  86.     
  87.     $a = (integer) $match[1];
  88.     $b = (integer) $match[2];
  89.  
  90.     return $a '.' $b;
  91. }
  92.  
  93. /**
  94.  * generates formated number
  95.  *
  96.  * @param    string            date
  97.  * @param    format            format
  98.  * @return    boolean/array    false/date array
  99.  */
  100. function makeNum($number$format ','$decimals 2
  101.     switch ($format{
  102.         case ','case 'komma':
  103.             $format ',';
  104.             break;
  105.         case '.'case 'dot'default:
  106.             $format '.';
  107.             break;
  108.     }
  109.     
  110.     // don't care for decimal characters
  111.     if ($decimals === false
  112.         return str_replace('.'$formatmakeDotOnly($number$decimals1);
  113.  
  114.     return number_format(makeDot($number$decimals)$decimals$format'');    
  115. }
  116.  
  117. /**
  118.  * generates formated number without decimal limit
  119.  *
  120.  * @param    string            date
  121.  * @param    format            format
  122.  * @return    boolean/array    false/date array
  123.  */
  124. function makeNumOnly($number$format ','
  125.     return makeNum($number$formatfalse);
  126. }
  127.  
  128. ?>

Documentation generated on Sun, 09 Sep 2007 17:09:14 +0200 by phpDocumentor 1.3.1