note 118781 added to function.number-format
| From: | vlad at blox dot ru | Date: | Fri, 05 Feb 2016 11:43:26 +0000 |
| Subject: | note 118781 added to function.number-format | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-204862@lists.php.net to get a copy of this message | ||
This function is used for reformatting already formatted numbers.
<?php
function formatNumber($number, $format=[], $oldDecimalSeparator=",.·'",
$multiplier=1)
{
/**
$format â the array of formatting options, details in the example.
$oldDecimalSeparator â decimal separator used in the $number. If the separator can meet
different characters, then you need to record them all, for example: ',.'.
$multiplier â typically used to adjust prices up or down.
*/
if ($format) {
$format += ['numOfDecimals' => 0, 'decimalSeparator' =>
'.', 'thousandSeparator' => '']; # Default format
# Find decimal separator
# The decimal separator is the one that is the last and does not occur more than once
if ($letters = str_replace(' ', '', $number)) { # Replace spaces
if ($letters = preg_replace('/^-/', '', $letters)) { # Remove minus
if ($letters = preg_replace('/[0-9]/', '', $letters)) { # Get
all non digits
$lastletter = substr($letters, -1); # Returns last char
if (substr_count($letters, $lastletter) == 1) {
if (strpos($oldDecimalSeparator, $lastletter) !== false)
$oldDecimalSep = $lastletter;
else
return $number;
}
}
}
}
$number = preg_replace('/[^0-9-]/', '', $number); # Remove all non
digits except 'minus'
if ($oldDecimalSep)
$number = str_replace($oldDecimalSep, '.', $number); # Format to float
if ($multiplier != 1)
$number = $number * $multiplier;
# Convert float to new format
$number = number_format($number,
$format['numOfDecimals'],
$format['decimalSeparator'],
$format['thousandSeparator']
);
}
return $number;
}
/**
Example. Formatting data in which the decimal separator can occur as the comma and dot. Formatting
into Russian format: -12 345,67
*/
echo formatNumber($number, [
'numOfDecimals' => 2,
'decimalSeparator' => ',',
'thousandSeparator' => ' '
], ',.');
?>
----
Server IP: 72.52.91.14
Probable Submitter: 217.173.31.171
----
Manual Page -- http://php.net/manual/en/function.number-format.php
Edit -- https://master.php.net/note/edit/118781
Del: integrated -- https://master.php.net/note/delete/118781/integrated
Del: useless -- https://master.php.net/note/delete/118781/useless
Del: bad code -- https://master.php.net/note/delete/118781/bad+code
Del: spam -- https://master.php.net/note/delete/118781/spam
Del: non-english -- https://master.php.net/note/delete/118781/non-english
Del: in docs -- https://master.php.net/note/delete/118781/in+docs
Del: other reasons-- https://master.php.net/note/delete/118781
Reject -- https://master.php.net/note/reject/118781
Search -- https://master.php.net/manage/user-notes.php