通貨記号の取得方法がわかりませんか?
現時点で使用しています
setlocale(LC_MONETARY, 'en_GB');
money_format('%i', 1000);
これで出力が得られます
GBP1,000
でも私はしたい
£1,000
PHPのマニュアルを確認しましたが、あまり役に立ちません。
何か案は?
通貨記号の取得方法がわかりませんか?
現時点で使用しています
setlocale(LC_MONETARY, 'en_GB');
money_format('%i', 1000);
これで出力が得られます
GBP1,000
でも私はしたい
£1,000
PHPのマニュアルを確認しましたが、あまり役に立ちません。
何か案は?
これを試しましたか?
setlocale(LC_MONETARY, 'en_GB');
utf8_encode(money_format('%n', 1000));
これは私のために働いた:
setlocale(LC_MONETARY, 'en_GB.UTF-8');
money_format('%n', 1000);
選択したソリューションに似ていますが、うまくいきませんでした。なんで?その理由は、ロケールen_GB
が私のシステムで定義されていないためen_GB.UTF-8
です。
$ locale -a | grep "en_GB"
en_GB.utf8
さらに、UTF-8コードセットを直接使用することで、への余分な呼び出しをutf8_encode
節約できます。
PHPのmoney_formatがひどいと思っている私のような人のための解決策は次のとおりです。
$formatted = '£' . number_format( (float) $amount, 2, '.', ',' );
私はこれが古いスレッドであることを知っていますが、現在非推奨となっているmoney_formatを使用せずに見つけた方法
$fmt = numfmt_create( 'en_GB', NumberFormatter::CURRENCY );
$formattedAmount = numfmt_format_currency($fmt, 1000, "GBP");
echo $formattedAmount;
£1,000.00が表示されます
末尾から.00を削除する必要がある場合は、次を使用できます。
substr(formattedAmount, 0, -3);
上記の解決策はどれも私にはうまくいきませんでした。彼らはサインA
の前に''を印刷していました。£
代わりに、エイダンとディエゴのソロレーションに基づいて、私は次のことをしています。
setlocale(LC_MONETARY, 'en_GB.UTF-8');
echo (money_format('%n', $bagel->Price));
簡単な解決策は、GBPを&ポンドに置き換えることです。(スペースなしで)money_formatの後。
str_replace()関数の使用はオプションです。
£-英国ポンド- £
(163)
// Search for the GBP in your string (subject) then replace for the symbol code
$search = "GBP";
$replace = "£";
$subject = "GBP";
echo str_replace($search, $replace, $subject);