-_KIKO_- 0 Denunciar post Postado Março 21, 2011 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; Compartilhar este post Link para o post Compartilhar em outros sites
wolfphw 60 Denunciar post Postado Março 21, 2011 No number_format você pode colcoar quantas casas decimais você quer... no seu caso 2 <?php $valor = "4000"; echo number_format($valor,2); ?> Compartilhar este post Link para o post Compartilhar em outros sites
Rafael Fiori 2 Denunciar post Postado Março 21, 2011 // 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; } Compartilhar este post Link para o post Compartilhar em outros sites
PHPeiro 0 Denunciar post Postado Março 21, 2011 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); Compartilhar este post Link para o post Compartilhar em outros sites
Rafael Fiori 2 Denunciar post Postado Março 21, 2011 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); } Compartilhar este post Link para o post Compartilhar em outros sites
-_KIKO_- 0 Denunciar post Postado Março 21, 2011 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 Compartilhar este post Link para o post Compartilhar em outros sites