Obtenez le symbole de la monnaie en PHP

Nous allons commencer avec un simple morceau de code pour le format de l'argent avec NumberFormatter:

$formatter = new NumberFormatter('en_US', NumberFormatter::CURRENCY);
echo $formatter->formatCurrency(123456789, 'JPY');

Cette affiche: ¥123,456,789.

C'est ok si vous voulez le format de l'argent.

Mais ce que je veux faire est d'obtenir le symbole de la monnaie (par exemple,¥) pour une devise donnée code ISO 4217 (par exemple JPY).

Ma première supposition est d'essayer en utilisant:

$formatter->getSymbol(NumberFormatter::CURRENCY_SYMBOL);

Mais qui donne le symbole de la monnaie pour les paramètres régionaux donné dans le constructeur (en_US), $ dans mon cas.

Est-il un moyen pour obtenir le symbole de devise par devise ISO 4217 code en PHP?

  • Le problème est que le symbole de la devise peut apparaître soit avant ou après le numéro. De quoi êtes-vous en utilisant le symbole?
  • Il suffit de faire une regex pour tout ce qui n'est pas un chiffre ou une virgule. Quelque chose comme /[^0-9,]*/.
  • Certains des symboles sera multi-octets, donc une simple chaîne de caractères de recherche ne fonctionne pas très bien.
  • Je veux éviter de regex. En fait, j'ai voulu la corriger github.com/symfony/symfony/blob/master/src/Symfony/Component/... et de se débarrasser de cette regex, j'ai pensé PHP prend en charge cette. Merci quand même.
  • Les plus utiles liées ressource que j'ai trouvé ceci (oui, c'est du python, mais toutes ces fonctions sont disponibles en PHP), ce qui est un peu une mauvaise "solution". La racine du problème, c'est que cette fonctionnalité dépend du système d'exploitation hôte avoir les informations sur les paramètres régionaux disponibles, mais en même temps je ne vois pas de raison pour que cela n'est pas possible à l'intérieur de ces restrictions.
  • J'ai essayé et currency_symbol et la plupart des autres données est vide pour une raison quelconque. Merci.

InformationsquelleAutor umpirsky | 2012-12-16