Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoal alguem tem uma função PHP para controlar dinheiro que é inputado sem casas decimais e sem separadores ?
No caso eu tenho o valor que vem do banco como 4000 que no caso significa R$ 40,00...
Se eu dou number_format neste valor ele retorna R$ 4.000.....estou precisando que ao entrar 4000 ele mostre 40,00... se entrar 12000 ele mostre 120,00....etc
Alguem tem essa função pronta?
É comum do pessoal que trabalha com pagseguro ter;
// TRANSFORMA MOEDA
function transformaMoeda($valor){
$novoValor = number_format($valor/100,2,",",".");
return $novoValor;
}
$foo = 4000;
echo transformaMoeda($foo);
Saida: 40,00
Se quiser fazer calculos ou voltar o valor pro BD use
// TIRA OS PONTOS E VIRGULAS DE UM NUMERO
function tiraMoeda($valor){
$novoValor = preg_replace("/[^0-9\s]/", "", $valor);
return $novoValor;
}Deve ter outra forma melhor de fazer e ainda colocar os pontos no milhar. Ex: R$ 1.000,00 em vez de R$ 1000,00
Mas a que fiz foi essa por enquanto.
function transformaReais($var){
// Insere ',' em 2 casas antes do fim //
$fase1 = substr_replace($var, ',', -2, 0) . "<br />\n";
// Insere R$ no começo e continua igual //
$fase2 = substr_replace($fase1, 'R$ ', 0, 0) . "<br />\n";
return $fase2;
}
$numero = '1234500';
echo transformaReais($numero);>
Deve ter outra forma melhor de fazer e ainda colocar os pontos no milhar. Ex: R$ 1.000,00 em vez de R$ 1000,00
Mas a que fiz foi essa por enquanto.
Tem razão, fiz uma gambiarra que funciona, mas deve ter jeito melhor de fazer isso
function moeda($valor){
$valor = number_format($valor/100,2);
str_replace(',','%',$valor);
str_replace('.',',',$valor);
return str_replace('%','.',$valor);
}Funcionou legal Rafael
Mas vou por uma alteração da função aqui
function moeda($valor){
$valor = number_format($valor/100,2,",",".");
str_replace(',','%',$valor);
str_replace('.',',',$valor);
return str_replace('%','.',$valor);
}
Input: 1Retorno: 0,01
Input: 100
Retorno: 1,00
Input: 1000
Retorno: 10,00
Input: 10000
Retorno: 100,00
Input: 100000
Retorno: 1.000,00
No number_format você pode colcoar quantas casas decimais você quer... no seu caso 2