Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

[VAZA]

Formatação de moeda (R$) no PHP

Recommended Posts

você pode usar o number_format

 

number_format($variavel_com_numero, int casa decimais, separador decimal , separador de milhares);

 

ex:

 

PHP

$num = 100000.50;


// 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

echo 'R$' . number_format($num, 2, '.', ','); // retorna R$100,000.50

 

 

etc

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

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
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

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);

Compartilhar este post


Link para o post
Compartilhar em outros sites
<?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)

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
Visitante
Este tópico está impedido de receber novos posts.

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.