ホームページ  >  記事  >  バックエンド開発  >  PHP でフォーマットされていない金額を解析するにはどうすればよいですか?

PHP でフォーマットされていない金額を解析するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-12 22:27:01367ブラウズ

How to Parse Unformatted Monetary Values in PHP?

PHP での書式設定されていない通貨値の解析

「75,25 €」などの文字列として表される通貨値を解析しようとする場合等価な数値であるため、常に parsefloat() メソッドの使用のみに依存するとは限りません。十分です。この制限に対処し、さまざまなロケールや区切り文字形式にわたる柔軟性を確保するには、より複雑なソリューションが必要です。

このソリューションは、正規表現を利用して、金額で使用されるさまざまな区切り文字と形式を考慮して数値を抽出します。入力文字列を指定すると、まず preg_replace() を使用して不要な文字が削除されます。後続の正規表現操作により、区切り文字と千の位の区切り文字が識別および削除され、数値文字列が生成されます。

最後に、クリーン化された文字列は標準の str_replace() 操作を受けて、浮動小数点にキャストされる前に小数点区切り文字をピリオドとして統合します。 (フロート) を使用します。この包括的なアプローチでは、ドットとカンマの両方を小数点の区切り文字として処理し、ロケールに関係なく正確な解析を保証します。

プロセスを説明する例を次に示します。

<?php

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);
}

このアプローチを使用すると、自信を持って次のことができます。フォーマットされていない通貨文字列を解析し、言語やフォーマット規則に関係なく信頼できる数値を取得します。

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

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