Nach vieler Forschung Ich bin eigentlich die folgende Funktion Format Nummern auf den vom Benutzer gefassten locale mit:PHP Formatierung Zahlen locale und zurück
function number_format_i18n($number, $decimals=0) {
$locale = localeconv();
return number_format($number,$decimals, $locale['decimal_point'], $locale['thousands_sep']);
}
ich diese Zahlen Format von DB verwenden werde .
Aber wenn ich ein Formular habe, wo ein Benutzer eine Nummer eingeben kann, brauche ich eine Funktion, um es zurück zu formatieren, damit ich in der DB speichern kann. Hier fand ich diese Lösung:
function number_format_en($number) {
// $_SESSION['lang']['locale'] has the locale like de_DE, ar_AE, tr_TR, ...
$fmt = numfmt_create($_SESSION['lang']['locale'], NumberFormatter::DECIMAL);
return numfmt_parse($fmt, $number);
}
Dies funktioniert mit den meisten Locales, die ich getestet habe, aber nicht mit jedem! Als Beispiel: Wenn ich arabicum verwenden (ar_AE):
$randomNumber = 3171003633.95;
$number2locale = number_format_i18n($randomNumber, 2);
// works as expected: 3,171,003,633.95
// now format it back:
$locale2number = number_format_en($number2locale);
// here I get this: 3.171
Wie kann ich eine locale formatieren Nummer in einer sicheren Art und Weise eingegeben "zurück" zu en-Format? Oder gibt es eine Möglichkeit, irgendeine Art von Zahlenformat zu erkennen und es zu en-formatieren, damit ich es in der Datenbank speichern kann?