5

数値を元の形式にフォーマット解除しようとしていますが、それが負であるかどうかを維持します。スタックオーバーフローの誰かが私をこのコードに導きました。これは非常にうまく機能しますが、ネガティブを保持しません。

誰かがこれをより良く修正するのを手伝ってくれますか?

編集- 米ドル通貨/通常の数字の場合

例:

1,234 = 1234

-1,234 = -1234

1,234.00 = 1234

1,234.56 = 1234.56

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

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

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

   return (float) str_replace(',', '.', $removedThousendSeparator);
}
4

6 に答える 6