Après beaucoup de recherches, je me sers en fait la fonction suivante aux numéros de format pour les paramètres régionaux setted par l'utilisateur:numéros PHP formating du paramètre régional et à l'arrière
function number_format_i18n($number, $decimals=0) {
$locale = localeconv();
return number_format($number,$decimals, $locale['decimal_point'], $locale['thousands_sep']);
}
Je vais l'utiliser pour les numéros de format de DB .
Mais si j'ai un formulaire où un utilisateur peut entrer un nombre, j'ai besoin d'une fonction pour le reformater afin que je puisse enregistrer dans la base de données. Ici, je trouve cette solution:
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);
}
Cela fonctionne avec la plupart des endroits que j'ai testé mais pas avec tout le monde! À titre d'exemple: si j'utilise arabe (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
Comment formater un lieu numéro entré de manière sécurisée « retour » pour en format? Ou existe-t-il un moyen de détecter tout type de format numérique et de le formater en format de sorte que je puisse l'enregistrer dans la base de données?