Bom dia galera.
Eu tenho a seguinte duvida e vou explicar
Possuo um campo input text que recebe um valor digitado pelo usuário em formato moeda
1.266,33
O que acontece é o seguinte preciso que quando entrar na variável php para uma possível gravação no banco de dados entre o valor sem formato por exemplo 1266.33 e assim por diante.
Considere que você tem no input o valor: 1.234,56 e deseja que a saída seja 1234.56. Você tem que saber qual é o locale do usuário, ou seja, em que idioma ele digitou o número. Então você pode fazer isso:
Sempre que for guardar um número que é uma moeda em uma tabela, procure sempre guardar também mais 2 informações:
locale do usuário (ex: pt_BR) e também
formato da moeda (ex: BRL). Essa informação é útil para que o NumberFormatter escreva o número desejado no formato correto e no idioma do usuário, exemplo de saída: R$ 10,01.
Segue um exemplo de código mais completo:
<?php
use NumberFormatter;
/**
* Currency helper.
* @author Rodrigo Guariento
* @since Ago 19, 2019
*/
class CurrencyHelper
{
/**
* Show float number as currency with symbol.
* @param float $number
* @param string $currency
* @param string $lang
* @return string
*/
public function showCurrency(float $number = 10.01, string $currency = 'BRL', string $lang = 'pt_BR'): string
{
$formatter = new NumberFormatter($lang, NumberFormatter::CURRENCY);
return $formatter->formatCurrency($number, $currency);
}
}
// example
$currencyHelper = new CurrencyHelper();
echo '10.01 em português na moeda reais: <br/>';
echo $currencyHelper->showCurrency(10.01, 'pt_BR', 'BRL') . '<br/>';
echo '10.01 em inglês na moeda reais: <br/>';
echo $currencyHelper->showCurrency(10.01, 'en_US', 'BRL') . '<br/>';
echo '10.01 em inglês EUA na moeda dólar: <br/>';
echo $currencyHelper->showCurrency(10.01, 'en_US', 'USD') . '<br/>';