У меня есть маска ввода в такой переменной 200.000,54
Это мой php-код
<?php
class MoneyHelper
{
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);
return [
'cleanString' => $cleanString,
'onlyNumbersString' => $onlyNumbersString,
'separatorsCountToBeErased' => $separatorsCountToBeErased,
'stringWithCommaOrDot' => $stringWithCommaOrDot,
'removedThousandSeparator' => $removedThousandSeparator,
'result' => (float) str_replace(',', '.', $removedThousandSeparator)
];
}
}
$obj = new MoneyHelper;
echo var_dump($obj->getAmount('200.000,54')) ;
Результат:
array (size=6)
'cleanString' => string '200.000,54' (length=10)
'onlyNumbersString' => string '20000054' (length=8)
'separatorsCountToBeErased' => int 1
'stringWithCommaOrDot' => string '200000,54' (length=9)
'removedThousandSeparator' => string '200000,54' (length=9)
'result' => float 200000.54
Все естьхорошо, пока я не проверю этот код с отрицательным числом.Допустим, - 200.000,54
Тогда результат все тот же,
array (size=6)
'cleanString' => string '200.000,54' (length=10)
'onlyNumbersString' => string '20000054' (length=8)
'separatorsCountToBeErased' => int 1
'stringWithCommaOrDot' => string '200000,54' (length=9)
'removedThousandSeparator' => string '200000,54' (length=9)
'result' => float 200000.54
Как я могу получить отрицательное число в результате?Пожалуйста, сообщите ...
Обновление
Вы не сообщили нам точный желаемый результат
Мне нужно: 'result' => float -200000.54