Como gravar numero no formato moeda para o padrão com php

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.

poderiam me ajudar por favor.

Por padrão um input text vai passar o valor para o PHP nesse formato 126633.

Independente da formatação ou máscara que você estiver usando no input text.

Eu faço um echo quando envio o valor e no php ele exibe do mesmo jeito que esta na mascara

Por exemplo
no campo digito e vai preenchendo as virgulas e ponto por causa da função script criada
1.266,33 -> no campo só digito os números.

na hora de eu clicar no botão submit envia com a mascara para o php.

o que preciso é tratar no php exemplo
se na variavel o valor for
$valor = 1.266,33;

echo $valor; -> a saida ser: 1266.33

Consegui resolver deste jeito.
primeiro tiro o ponto e depois a virgula que fica transformo em ponto.

`$valorAplicado = 1.266,33;`
$valor = str_replace("." , "" , $valorAplicado ); // Primeiro tira os pontos
`$valorAplicado2 = str_replace(',','.',$valor);`
echo "$valorAplicado2";
1 curtida

– ENTRADA –

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:

	$fmt = new \NumberFormatter( 'pt_BR', \NumberFormatter::DECIMAL );
	$num = "1.234,56";
	echo $fmt->parse($num);

– SAÍDA –

Sempre que for guardar um número que é uma moeda em uma tabela, procure sempre guardar também mais 2 informações:

  1. locale do usuário (ex: pt_BR) e também
  2. 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/>';
1 curtida