Position actuelle: Accueil> Derniers articles> SetLocale () Pratique et compétences pour définir la mise en forme des nombres

SetLocale () Pratique et compétences pour définir la mise en forme des nombres

gitbox 2025-06-03

Dans le développement de PHP, il est souvent nécessaire de formater les nombres en fonction des habitudes de différentes régions, en particulier les expressions de montants de devises, de décimaux et de milliers. PHP fournit la fonction setLocale () pour définir les informations de la région, affectant ainsi la méthode d'affichage des formats tels que les nombres et les dates. Cet article expliquera en détail comment utiliser SetLocale () aux formats SETNumber, ainsi que des techniques de contrôle des formats connexes et des exemples pratiques.


1. Qu'est-ce que setLocale () ?

SetLocale () est une fonction utilisée dans PHP pour définir les paramètres des paramètres régionaux. Il affecte le format d'affichage des nombres, des devises, des dates et des heures, permettant au programme de formater la sortie en fonction des règles régionales spécifiées.

Prototype de fonction:

 setlocale(int $category, string|array $locale): string|false
  • $ Catégorie : Définir les catégories, telles que LC_NUMERIC (format numérique), LC_MONETARY (format de devise), LC_TIME (format de temps), etc.

  • $ Locale : Spécifiez le code de la langue régionale, tel que ZH_CN.UTF-8 , EN_US.UTF-8 , etc.


2. Comment définir le format numérique à l'aide de setLocale ()

Par défaut, le format numérique de PHP peut ne pas se conformer aux spécifications de certaines régions, telles que le point décimal par défaut en anglais . , et le millième séparateur est , . Si vous souhaitez ajuster ces formats, vous devez utiliser SetLocale () .

Exemple: réglé sur l'environnement chinois et ajuster le format numérique

 <?php
// Définissez le format numérique sur l&#39;environnement chinois
setlocale(LC_NUMERIC, 'zh_CN.UTF-8');

// Tester le format numérique
$number = 1234567.89;

// utiliser number_format() Numéros de format
echo number_format($number, 2, ',', ' ');
?>

Dans l'exemple ci-dessus:

  • Spécifiez l'environnement de format numérique via setLocale () .

  • Personnalisez le point décimal et des milliers de caractères de séparateur avec numéro_format () .

Il convient de noter que la prise en charge de SetLocale (LC_NUMERIC, ...) peut varier sur différents systèmes et versions PHP, et les codes de langue disponibles sur les environnements Windows et Linux ne sont pas exactement les mêmes.


3. Combiner localonv () pour obtenir des paramètres de format numérique localisés

Il existe également une fonction localonv () en php, qui renverra les informations de format de numéro dans l'environnement SetLocale () actuel, y compris les symboles décimaux, des milliers de symboles, etc.

Exemple:

 <?php
// Réglez la zone sur l&#39;allemand(Allemagne)
setlocale(LC_ALL, 'de_DE.UTF-8');

// Obtenez les informations de format localisé actuelles
$locale_info = localeconv();

$number = 1234567.89;

echo "Decimal point: " . $locale_info['decimal_point'] . "\n";
echo "Thousands separator: " . $locale_info['thousands_sep'] . "\n";

// utiliser locale 信息Numéros de format
echo number_format(
    $number,
    2,
    $locale_info['decimal_point'],
    $locale_info['thousands_sep']
);
?>

Sortir:

 Decimal point: ,
Thousands separator: .
1.234.567,89

Dans cet exemple, le format de nombre allemand utilisé pour les décimaux , et utilisé pour les milliers . , conformément aux douanes allemandes.


4. Compétences pratiques

  1. Priorité pour spécifier des codes de zone précis <br> Les codes régionaux pris en charge par différents systèmes d'exploitation sont différents. Vous pouvez les transmettre dans un tableau. PHP essaiera à son tour:

 setlocale(LC_ALL, ['zh_CN.UTF-8', 'zh_CN', 'Chinese']);
  1. Combinant localonv () et numéro_format () pour implémenter le format dynamique <br> Nombres de format dynamiquement basés sur le séparateur obtenu par les paramètres régionaux actuels.

  2. Lors du traitement des formats de devises, utilisez LC_Monetary et combinez Money_Format () (Notez que PHP7 ne le prendra pas en charge plus tard)
    Les projets modernes recommandent d'utiliser la classe NumberFormatter .


5. Exemple: sortie dynamique des nombres formatés selon la région

 <?php
// Configuration du lieu
setlocale(LC_ALL, 'fr_FR.UTF-8');

// Obtenir des informations localisées au format numérique
$locale = localeconv();

$number = 9876543.21;

// 输出Numéros de format
echo number_format($number, 2, $locale['decimal_point'], $locale['thousands_sep']);
?>

Résultats en cours:

 9 876 543,21

La France est utilisée pour utiliser des espaces comme millièmes, et le point décimal est une virgule.


6. Résumé

  • SetLocale () peut contrôler l'environnement régional au format numérique.

  • LocalEConv () fournit des séparateurs spécifiques pour le format numérique localisé.

  • Number_Format () combiné avec le paramètre localEconv () peut formater flexiblement les nombres.

  • Faites attention aux différences dans les codes linguistiques de différents systèmes et ajustez-les dans l'environnement de test.

  • Dans les projets modernes, si vous avez besoin d'un soutien international plus fort, vous recommandez la classe de formulaires numériques de PHP.

En utilisant rationnellement SetLocale () et des fonctions connexes, les développeurs PHP peuvent facilement réaliser un affichage de format numérique qui répond aux habitudes de différentes régions, améliorant l'expérience internationale de l'application.


 <?php
// exemple:installationlocaleC&#39;est chinois simplifié,Numéros de format输出
setlocale(LC_ALL, 'zh_CN.UTF-8');

$number = 1234567.89;
$locale = localeconv();

echo number_format($number, 2, $locale['decimal_point'], $locale['thousands_sep']);
?>