ホームページ >バックエンド開発 >PHPチュートリアル >PHP でフォーマットされていない通貨の値を調整するにはどうすればよいですか?

PHP でフォーマットされていない通貨の値を調整するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-23 22:28:16591ブラウズ

How to Refine Unformatted Money Values in PHP?

PHP での書式設定されていない通貨値の調整

PHP で財務データを解析する場合、多くの場合、通貨値を表す文字列を浮動小数点数に変換する必要があります。これを実現するための一般的な方法では、文字列内のコンマをピリオドに置き換えて、 floatval() 関数を使用します。ただし、このメソッドは固定の小数点区切り文字 (ピリオド) に依存しているため、区切り文字としてカンマが使用されるロケールには適さない可能性があります。

両方の小数点区切り文字を処理する、より堅牢なソリューションを次のコードに示します。 :

public function getAmount($money)
{
    $cleanString = preg_replace('/([^0-9\.,])/i', '', $money);
    $onlyNumbersString = preg_replace('/([^0-9])/i', '', $money);

    $separatorsCountToBeErased = strlen($cleanString) - strlen($onlyNumbersString) - 1;

    $stringWithCommaOrDot = preg_replace('/([,\.])/', '', $cleanString, $separatorsCountToBeErased);
    $removedThousandSeparator = preg_replace('/(\.|,)(?=[0-9]{3,}$)/', '',  $stringWithCommaOrDot);

    return (float) str_replace(',', '.', $removedThousandSeparator);
}

このソリューションはいくつかの要素で構成されています手順:

  • サニタイズ: まず、数値以外の文字を削除して入力文字列をサニタイズします。
  • カウント区切り文字: 次に、サニタイズされたファイル内に存在する小数点区切り文字 (カンマまたはピリオド) の数をカウントします。 string.
  • Parse: 正規表現を使用すると、区切り文字が削除され、文字列の数値部分のみが残ります。
  • Conversion: 最後に、クリーンアップされた文字列は浮動小数点数に変換されます。

このアプローチにより、次のことが保証されます。フォーマットされていない通貨値は、ロケール固有の小数点記号に関係なく、正しく解析されます。ただし、金額の小数部分が 2 桁以下であると想定していることに注意することが重要です。

テスト例:

['1,10 USD', 1.10],
['1 000 000.00', 1000000.0],
[' 000 000.21', 1000000.21],
['£1.10', 1.10],
['3 456 789', 123456789.0],
['3,456,789.12', 123456789.12],
['3 456 789,12', 123456789.12],
['1.10', 1.1],
[',,,,.10', .1],
['1.000', 1000.0],
['1,000', 1000.0]

以上がPHP でフォーマットされていない通貨の値を調整するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。