Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
aew pessoal..tem alguma função no PHP para formatar moeda?no mysql o campo esta como doubleFalow...
A função number_format() é boa.
Mas, no sistema em q estava desenvolvendo, percebi q caso o usuário "fuja" dos padrões (999.999,99 ou 9999.99 e variantes), a função retorna um erro ou "deixa passar" o valor q o usuário inseriu.
Para resolver isso, criei essa função para validar:
function formatoReal($valor) {
$valor = (string)$valor;
$regra = "/^[0-9]{1,3}([.]([0-9]{3}))*[,]([.]{0})[0-9]{0,2}$/";
if(preg_match($regra,$valor)) {
return true;
} else {
return false;
}
}
Retorna TRUE se seguir o padrão (brasileiro) e falso caso contrário.
echo formatoReal('9'); //false
echo formatoReal('99'); //false
echo formatoReal('999'); //false
echo formatoReal('9,99'); //true
echo formatoReal('99,99'); //true
echo formatoReal('99,999'); //false
echo formatoReal('9.999'); //false
echo formatoReal('9999,99'); //false
echo formatoReal('99.,.99'); //false
echo formatoReal('99,.99'); //false
echo formatoReal('999.999.999,99'); //true
Você deve utilizar um "mascaramento" em jquery para moeda, em seu input, e quando receber os dados tratá-los, eu fiz da seguinte forma:
function moeda($get_valor) {
$source = array('.', ',');
$replace = array('', '.');
$valor = str_replace($source, $replace, $get_valor); //remove os pontos e substitui a virgula pelo ponto
return $valor; //retorna o valor formatado para gravar no banco
}O conteúdo dessa pagina me ajudo, Obrigado a todos.
Mas quem estiver procurando fazer uma formatação simples de por exemplo 24,90
Aqui esta:
$valor 24.9;
echo 'R$: '.number_format($valor,2);Como seria em um input?
<?php
/*
Exemplo:
No banco de dados o valor é 10.00
a primeira viriavel vai recebe e a segunda vai transforma em 10,00
e no site vai por R$<?php echo $valor; ?>
---------------------------------------------------
Quando for envia no "input" envie assim 10.00 agora for acima de 2 digito reais: 100.00 = R$100,00 / 1000.00 = R$1.000,00 / assim por diante.
---------------------------------------------------
$valor = 10.00;
$valor = number_format($valor, 2, ',', '.');
---------------------------------------------------
R$<?php echo $valor; ?> | Vai imprimir: R$10,00
*/
$valor = $linha['valor']; //Recebe o valor vindo do bancos de dados
$valor = number_format($valor, 2, ',', '.'); // formata para modo: R$ (Real Brasileiro)Use o maskedinput ou maskmoney do jQuery e faça uma validação como o @Alaerte Gabriel disse ai em cima que não vai ter erro, vai sempre ter um float, aí é só tratar com o number_format
você pode usar o number_format
// repare que o padrão é no formato americano
echo 'R$' . number_format($num, 2); // retorna R$100,000.50
// nosso formato
echo 'R$' . number_format($num, 2, ',', '.'); // retorna R$100.000,50
//formato americano