W3docs

localeconv()

Découvrez la fonction PHP localeconv() pour obtenir les informations de formatage numérique et monétaire d'une locale active.

La fonction PHP localeconv() retourne un tableau associatif décrivant comment les nombres et les devises doivent être formatés dans la locale actuellement active — quel séparateur décimal utiliser, quel séparateur de milliers, le symbole monétaire, où placer le symbole et le signe, etc. Elle lit la locale définie en dernier par setlocale(), ce qui en fait le lien entre « dans quelle locale suis-je » et « quelles sont les règles de formatage ».

Cette page couvre la syntaxe, chaque clé du tableau retourné, un exemple exécutable, ainsi que l'écueil qui piège la plupart des développeurs : la locale par défaut retourne principalement des valeurs vides.

Syntaxe

localeconv(): array

localeconv() ne prend aucun argument et retourne toujours un tableau. Elle n'a pas de mode d'échec — il n'y a aucune valeur à passer, et elle ne retourne jamais false.

Un exemple simple

php— editable, runs on the server

Remarquez l'appel à setlocale() à la première ligne. Sans lui, le script s'exécute dans la locale C par défaut, où la plupart des champs monétaires reviennent vides — voir l'écueil ci-dessous.

Le tableau retourné

localeconv() retourne ces clés. Les clés simples (decimal_point, thousands_sep) s'appliquent aux nombres ordinaires ; les clés mon_* s'appliquent spécifiquement aux valeurs monétaires.

CléSignification
decimal_pointSéparateur décimal pour les nombres non monétaires (ex. .)
thousands_sepSéparateur de milliers pour les nombres non monétaires (ex. ,)
groupingTableau décrivant le groupement des chiffres, ex. [3] = groupes de 3
int_curr_symbolSymbole monétaire international, ex. USD
currency_symbolSymbole monétaire local, ex. $
mon_decimal_pointSéparateur décimal pour les montants
mon_thousands_sepSéparateur de milliers pour les montants
mon_groupingGroupement des chiffres pour les montants
positive_sign / negative_signChaînes de signe pour les valeurs positives / négatives
int_frac_digits / frac_digitsNombre de chiffres fractionnaires (international / local)
p_cs_precedes / n_cs_precedes1 si le symbole monétaire précède une valeur positive / négative, 0 s'il suit
p_sep_by_space / n_sep_by_space1 si une espace sépare le symbole de la valeur
p_sign_posn / n_sign_posnPosition du signe par rapport à la valeur et au symbole

Pour inspecter tout le tableau en une fois, utilisez print_r() :

<?php
setlocale(LC_ALL, 'en_US.UTF-8');
print_r(localeconv());
?>

Sur un système en_US.UTF-8, cela affiche (abrégé) :

Array
(
    [decimal_point] => .
    [thousands_sep] => ,
    [int_curr_symbol] => USD
    [currency_symbol] => $
    [frac_digits] => 2
    [p_cs_precedes] => 1
    [grouping] => Array ( [0] => 3 )
    ...
)

Écueil : la locale par défaut retourne des valeurs vides

Avant d'appeler localeconv(), PHP s'exécute dans la locale C sauf si vous en définissez une. Dans la locale C, presque tous les champs monétaires sont vides et les champs de comptage de chiffres valent 127 (marqueur de « valeur non disponible » de la norme C) :

<?php
// No setlocale() — default C locale.
$info = localeconv();
var_dump($info['currency_symbol']);  // string(0) ""
var_dump($info['frac_digits']);      // int(127)
?>

Donc si localeconv() semble « ne rien retourner d'utile », vous avez presque certainement oublié d'appeler setlocale() auparavant. Définissez la locale explicitement, et sachez que les locales disponibles dépendent du système d'exploitation sur lequel le script s'exécute.

Quand l'utiliser ?

Vous appelleriez rarement localeconv() pour formater manuellement une sortie — number_format() et la classe NumberFormatter de l'extension intl s'en chargent pour vous. Elle est surtout utile lorsque vous avez besoin des règles brutes de la locale, par exemple pour :

  • construire un formateur personnalisé qui respecte la locale de l'utilisateur,
  • normaliser une saisie utilisateur (savoir si 1.234,56 utilise , ou . comme séparateur décimal),
  • décider si le symbole monétaire va avant ou après le montant.

Fonctions associées

  • setlocale() — définir la locale que localeconv() lit.
  • number_format() — formater un nombre avec regroupement des milliers.
  • money_format() — formatage monétaire sensible à la locale (supprimé en PHP 8.0).
  • strftime() — formatage de date/heure sensible à la locale.

Exercice

Pratique
Que fait la fonction localeconv() en PHP ?
Que fait la fonction localeconv() en PHP ?
Was this page helpful?