1

これは私が作っているよりも簡単なはずだと私はかなり確信しています。私には、そのサイトが企業や人々にローンを提供しているクライアントがいます。

問題は、人々が入力する金額を検証することです。通貨記号を取り除き、単位全体の後で何かを失い(ほとんどの場合、英ポンド-ペンスを失う)、最終的な数値をサードパーティのデータベーステーブルにDoubleとして格納できる形式に変換する必要があります。

上記はほとんど機能していました-ただし、ユーザーが千の区切り記号と小数の区切り記号を混在させている場合を除いて、誰かが終止符を千の区切りまたは小数の区切りにする場合は、解決する必要があります。

誰かが賢い解決策を手に入れましたか?正規表現はルートですか?

ありがとう、

スティーブ

4

2 に答える 2

1

私はこれを行います(あなたの入力がOKであると仮定して、「$ 6,00,00」または「777.7.98、$ 8938」または単に「こんにちはママ」のような無効な入力はありません):

  1. 通貨記号を見つけてそれを取り除きます。これは最初または最後にあり、「USD」、「CHF」などのように、複数の文字にすることができます。
  2. 小数点記号(右から3番目の文字)があるかどうかを確認します。ない場合は、末尾に「00」を追加します(100を掛けるなど)。
  3. すべてのスペース、すべてのコンマ、すべてのドット、すべてを削除します'-千/小数点の区切り文字、または数字だけを残すことは他にないと思います
  4. 結果を100で割る
于 2013-03-21T10:45:10.500 に答える
0
    function currencyToDouble($input) {
    if(preg_match("/^(.*)[^0-9]([0-9]{1,2})$/", $input, $matches)) {
        $val = preg_replace("/[^0-9]/", "", $matches[1]) . '.' . $matches[2] . "\n\n";
    } else {
        $val = preg_replace("/[^0-9]/", "", $input) . "\n\n";
    }

    return floatVal($val);


}

私の最終的な解決策であり、すべてのテストケースをうまく処理しているようです。考え?

于 2013-03-26T18:51:06.040 に答える