Ir para conteúdo

POWERED BY:

Arquivado

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

Walter Aragão

receber um número inteiro e escrevê-lo por extenso

Recommended Posts

Pessoal ,

Tenho um formulário que gera algumas informações, para um contrato. Porém quando gero o valor , gero um numero, queria saber se existe alguma função aonde eu consiga escrever esse número por extenso automaticamente.. é possivel ?

 

Pessoal ,

Tenho um formulário que gera algumas informações, para um contrato. Porém quando gero o valor , gero um numero, queria saber se existe alguma função aonde eu consiga escrever esse número por extenso automaticamente.. é possivel ?

 

na verdade achei essa function , porém não entendi muito , como faço para o valor recebido no $valorContrato = $_POST['valorContrato']; vire uma variavel escrita por extenso para ser garavada , tipo $valorContratoExtenso.

 

segue :

 

function extenso($valor=0, $maiusculas=false) {
       // verifica se tem virgula decimal
       if (strpos($valor, ",") > 0) {
               // retira o ponto de milhar, se tiver
               $valor = str_replace(".", "", $valor);

               // troca a virgula decimal por ponto decimal
               $valor = str_replace(",", ".", $valor);
       }
       $singular = array("centavo", "real", "mil", "milhão", "bilhão", "trilhão", "quatrilhão");
       $plural = array("centavos", "reais", "mil", "milhões", "bilhões", "trilhões",
               "quatrilhões");

       $c = array("", "cem", "duzentos", "trezentos", "quatrocentos",
               "quinhentos", "seiscentos", "setecentos", "oitocentos", "novecentos");
       $d = array("", "dez", "vinte", "trinta", "quarenta", "cinquenta",
               "sessenta", "setenta", "oitenta", "noventa");
       $d10 = array("dez", "onze", "doze", "treze", "quatorze", "quinze",
               "dezesseis", "dezesete", "dezoito", "dezenove");
       $u = array("", "um", "dois", "três", "quatro", "cinco", "seis",
               "sete", "oito", "nove");

       $z = 0;

       $valor = number_format($valor, 2, ".", ".");
       $inteiro = explode(".", $valor);
       $cont = count($inteiro);
       for ($i = 0; $i < $cont; $i++)
               for ($ii = strlen($inteiro[$i]); $ii < 3; $ii++)
               $inteiro[$i] = "0" . $inteiro[$i];

       $fim = $cont - ($inteiro[$cont - 1] > 0 ? 1 : 2);
       $rt = '';
       for ($i = 0; $i < $cont; $i++) {
               $valor = $inteiro[$i];
               $rc = (($valor > 100) && ($valor < 200)) ? "cento" : $c[$valor[0]];
               $rd = ($valor[1] < 2) ? "" : $d[$valor[1]];
               $ru = ($valor > 0) ? (($valor[1] == 1) ? $d10[$valor[2]] : $u[$valor[2]]) : "";

               $r = $rc . (($rc && ($rd || $ru)) ? " e " : "") . $rd . (($rd &&
                       $ru) ? " e " : "") . $ru;
               $t = $cont - 1 - $i;
               $r .= $r ? " " . ($valor > 1 ? $plural[$t] : $singular[$t]) : "";
               if ($valor == "000"

               )$z++; elseif ($z > 0)
               $z--;
               if (($t == 1) && ($z > 0) && ($inteiro[0] > 0))
               $r .= ( ($z > 1) ? " de " : "") . $plural[$t];
               if ($r)
               $rt = $rt . ((($i > 0) && ($i <= $fim) &&
                       ($inteiro[0] > 0) && ($z < 1)) ? ( ($i < $fim) ? ", " : " e ") : " ") . $r;
       }

       if (!$maiusculas) {
               return($rt ? $rt : "zero");
       } elseif ($maiusculas == "2") {
               return (strtoupper($rt) ? strtoupper($rt) : "Zero");
       } else {
               return (ucwords($rt) ? ucwords($rt) : "Zero");
       }
       }

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente o seguinte:

$valorContrato = $_POST['valorContrato']; 
$valor_contrato_extenso = extenso($valorContrato);

 

Lembre-se que a função "extenso" deve estar no formulário ou você deve incluir a função no formulário. Sempre que eu declaro uma variável eu utilizo somente letras em minúsculo e sem espaço (sugestão). Qlquer dúvida estamos aí. Valeu.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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