ホームページ > バックエンド開発 > PHPチュートリアル > 複数のロケールを使用して PHP で通貨文字列を解析するにはどうすればよいですか?

複数のロケールを使用して PHP で通貨文字列を解析するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-11-13 03:13:02
オリジナル
946 人が閲覧しました

How to Parse Currency Strings in PHP with Multiple Locales?

PHP での通貨文字列の解析

PHP で通貨文字列を解析する場合、現在のロケールに応じてさまざまな小数点区切り文字を処理するのが難しい場合があります。 。 str_replace() を使用してカンマをドットに変換することは場合によっては機能しますが、小数点区切り文字が常にドットであるという前提に依存します。

より堅牢なソリューション

この制限に対処し、複数のロケールに対応するための、より複雑だが汎用性の高い解決策は、正規表現 (regex) を使用することです。その方法は次のとおりです。

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);
}
ログイン後にコピー

説明

  • preg_replace() は、数字以外の文字を削除し、小数点区切り文字を分離します。
  • 区切り文字の数は、小数点のみになるまで一度に 1 つずつ削除するように決定されます。区切り文字は残ります。
  • その後、文字列がクリーンアップされて 1,000 個の区切り文字が削除され、最後に正しい小数点区切り文字を含む浮動小数点値が返されます。

注意事項

  • 小数部が 2 を超える場合、このメソッドは失敗します
  • そのようなシナリオに対処する場合は、より包括的な処理のために、currency-detector (https://github.com/mcuadros/currency-detector) のようなライブラリの使用を検討してください。

以上が複数のロケールを使用して PHP で通貨文字列を解析するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート