17

通貨記号の取得方法がわかりませんか?

現時点で使用しています

setlocale(LC_MONETARY, 'en_GB');
money_format('%i', 1000);

これで出力が得られます

GBP1,000

でも私はしたい

£1,000

PHPのマニュアルを確認しましたが、あまり役に立ちません。

何か案は?

4

7 に答える 7

22

これを試しましたか?

setlocale(LC_MONETARY, 'en_GB');
utf8_encode(money_format('%n', 1000));
于 2012-01-26T14:22:33.067 に答える
22

これは私のために働いた:

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節約できます。

于 2012-12-20T18:13:59.663 に答える
3

PHPのmoney_formatがひどいと思っている私のような人のための解決策は次のとおりです。

$formatted = '£' . number_format( (float) $amount, 2, '.', ',' );
于 2017-02-08T10:40:03.237 に答える
1

私はこれが古いスレッドであることを知っていますが、現在非推奨となっている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);
于 2020-06-26T12:23:29.453 に答える
0

上記の解決策はどれも私にはうまくいきませんでした。彼らはサインAの前に''を印刷していました。£代わりに、エイダンとディエゴのソロレーションに基づいて、私は次のことをしています。

setlocale(LC_MONETARY, 'en_GB.UTF-8');
echo (money_format('%n', $bagel->Price)); 
于 2015-01-23T09:31:56.423 に答える
-1

簡単な解決策は、GBPを&ポンドに置き換えることです。(スペースなしで)money_formatの後。

于 2012-01-26T14:19:50.283 に答える
-6

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);
于 2012-01-26T14:23:59.540 に答える