1
resposta

Ajuda para converter valor em real

Olá boa noite. Deixe-me tirar uma dúvida com você, eu uso o WordPress e coloqueio o seguinte código:

            <div class="form-group"><label>Valor pretendido, por exemplo: 5000 </label><input id="currency" required
                    name="valor" type="text" class="form-control" data-thousands="." data-decimal=","/>

Para que em um campo convertesse o campo onde tinha o "." em ",". E também coloquei em um campo onde recebe os parâmetros para trocar o valor também:

 $valor = str_replace(",", ".", str_replace(".", "", $_POST['valor']));

Queria uma ajuda, pois ao enviar por email https://prnt.sc/s8xruw, gostaria que enviasse também com a pontuação correta, veja que no email vai sem pontuação. No caso preciso que chegue desta forma: https://prnt.sc/s8xugk Mas por email, segue o código do email:

        <li>   <strong>Crédito: </strong> '.  $credito . '</li>
        <li>   <strong>Parcela: </strong> '.  $parcela .'</li>

Como faria para colocar, nesse código acima. Agradeço qualquer ajuda. Qualquer coisa eu gravo um vídeo.

1 resposta

Boa tarde!

A solução para o seu problema vai depender muito de como o valor vai ser digitado. Da forma como você colocou no exemplo, ele sempre vai remover todas as vírgulas e pontos.

Vou colocar um exemplo em código pra você ver.

<?php
    // Se o usuário passar , como separador de centavos e . como separador de milhar
    $valorUm = "2.000,00";
    $valorUm = str_replace(".", "", $valorUm); # 2000,00
    $valorUm = str_replace(",", ".", $valorUm); # 2000.00

    # A partir daqui, temos o número 2000 que pode ser número, então:
    $valorUm = number_format($valorUm, 2, ",", ".");
    /* Na função acima, a gente diz que quer o $valorUm com:
     * 2 casas decimais
     * vírgula como separador decimal
     * ponto como separador de milhar.
     */

O ideal para seu caso é colocar uma máscara com validação no formulário para garantir que a entrada sempre será no mesmo padrão, depois disso, no PHP você trata ele no padrão numérico da linguagem (separador somente para decimal e com ponto) e então chama a função number_format como no meu exemplo.

Espero ter ajudado, se ficar alguma dúvida pode perguntar!