Solución:
En primer lugar, no existe una tabla internacional de símbolos de moneda global que cualquier persona del planeta pueda leer y comprender.
En cada región / país, los símbolos de moneda serán diferentes, por eso debe determinarlos en función de quién está leyendo, utilizando la configuración regional del navegador / usuario.
La forma correcta es como adivinó, usando NumberFormatter :: CURRENCY_SYMBOL, pero primero debe establecer la configuración regional adecuada como [email protected]= JPY:
$locale="en-US"; //browser or user locale
$currency='JPY';
$fmt = new NumberFormatter( $locale."@currency=$currency", NumberFormatter::CURRENCY );
$symbol = $fmt->getSymbol(NumberFormatter::CURRENCY_SYMBOL);
header("Content-Type: text/html; charset=UTF-8;");
echo $symbol;
De esta forma el símbolo será comprensible para el usuario.
Por ejemplo, el símbolo $ será:
- Dolar canadiense (CAD): CA $ en USA, CANALLA En Rumania , $ CA en Iran
- Irán Rial (TIR): TIR en EE. UU., mientras que en Irán será ﷼
Logré esto usando https://github.com/symfony/Intl:
SymfonyComponentIntlIntl::getCurrencyBundle()->getCurrencySymbol('EUR')
devoluciones
'€'.
Si establece la configuración regional con esta función setlocale("LC_ALL", "es_AR");
Puedes usar localeconv()['currency_symbol']
o localeconv()['int_curr_symbol']
para obtener el símbolo de moneda local y la variación internacional del símbolo de moneda.