From: Jason Woofenden Date: Tue, 30 Dec 2008 06:10:44 +0000 (-0500) Subject: format_decimal() improved (but not tested much). It now strips zeros from the end... X-Git-Url: https://jasonwoof.com/gitweb/?p=wfpl.git;a=commitdiff_plain;h=c84327eb5f13ebd2af0792adbdfb35cfb1a3eca5 format_decimal() improved (but not tested much). It now strips zeros from the end after the decimal point, and always returns zero as 0 (never 0.0) --- diff --git a/format.php b/format.php index f395491..0126ada 100644 --- a/format.php +++ b/format.php @@ -45,19 +45,32 @@ function format_int($str) { return ereg_replace('^0*([0-9])', '\1', $str); } -function format_positive_decimal($str) { +function format_decimals($str) { + $str = ereg_replace('[^0-9]', '', $str); + return ereg_replace('^([0-9])0*', '\1', $str); +} + +function _format_positive_decimal($str) { $str = ereg_replace('[^0-9.]', '', $str); $pos = strpos($str, '.'); if($pos !== false) { $str = str_replace('.', '', $str); if($pos == 0) { - return '0.' . $str; + return '0.' . format_decimals($str); } elseif($pos == strlen($str)) { - return $str; + return format_int($str); } else { - return substr($str, 0, $pos) . '.' . substr($str, $pos); + return format_int(substr($str, 0, $pos)) . '.' . format_decimals(substr($str, $pos)); } } + return format_int($str); +} + +function format_positive_decimal($str) { + $str = _format_positive_decimal($str); + if($str === '0.0') { + $str = '0'; + } return $str; } @@ -65,7 +78,7 @@ function format_decimal($str) { $str = ereg_replace('[^0-9.-]', '', $str); if(substr($str, 0, 1) == '-') { $str = format_positive_decimal(substr($str, 1)); - if($str !== '' && $str !== '0' && $str != '0.0') { + if($str !== '' && $str !== '0') { $str = '-' . $str; } return $str;