private static function PHPExcel_Style_NumberFormat::_complexNumberFormatMask in Loft Data Grids 7.2
Same name and namespace in other branches
- 6.2 vendor/phpoffice/phpexcel/Classes/PHPExcel/Style/NumberFormat.php \PHPExcel_Style_NumberFormat::_complexNumberFormatMask()
1 call to PHPExcel_Style_NumberFormat::_complexNumberFormatMask()
- PHPExcel_Style_NumberFormat::toFormattedString in vendor/
phpoffice/ phpexcel/ Classes/ PHPExcel/ Style/ NumberFormat.php - * Convert a value in a pre-defined format to a PHP string * *
File
- vendor/
phpoffice/ phpexcel/ Classes/ PHPExcel/ Style/ NumberFormat.php, line 501
Class
- PHPExcel_Style_NumberFormat
- PHPExcel_Style_NumberFormat
Code
private static function _complexNumberFormatMask($number, $mask, $level = 0) {
$sign = $number < 0.0;
$number = abs($number);
if (strpos($mask, '.') !== false) {
$numbers = explode('.', $number . '.0');
$masks = explode('.', $mask . '.0');
$result1 = self::_complexNumberFormatMask($numbers[0], $masks[0], 1);
$result2 = strrev(self::_complexNumberFormatMask(strrev($numbers[1]), strrev($masks[1]), 1));
return ($sign ? '-' : '') . $result1 . '.' . $result2;
}
$r = preg_match_all('/0+/', $mask, $result, PREG_OFFSET_CAPTURE);
if ($r > 1) {
$result = array_reverse($result[0]);
foreach ($result as $block) {
$divisor = 1 . $block[0];
$size = strlen($block[0]);
$offset = $block[1];
$blockValue = sprintf('%0' . $size . 'd', fmod($number, $divisor));
$number = floor($number / $divisor);
$mask = substr_replace($mask, $blockValue, $offset, $size);
}
if ($number > 0) {
$mask = substr_replace($mask, $number, $offset, 0);
}
$result = $mask;
}
else {
$result = $number;
}
return ($sign ? '-' : '') . $result;
}