+ Responder ao Tópico



  1. #1

    Exclamation Duvidas com php

    olá galera estou com problemas para montar um código que preciso entregar ate domingo, preciso fazer um código em php que mostre o numero digitado por extenso usando substr, eu cheguei perto, mas ainda está havendo bugs, quando escrevo "111", ele escreve "cento e e um", ou quando usou qual numero com zero ele escreve o zero, se eu digitar por exemplo 109, ele escreve "cento e e nove", ou 100 "cento e e zero" e assim vai, não sei como resolver, vou postar o código aki
    <?php


    $unidade = array("zero","um","dois","três","quatro","cinco","seis","sete","oito","nove","dez","onze","doze","treze","quatorze","quinze","dezesseis","dezessete","dezoito","dezenove");
    $dezenas = array("","","vinte","trinta","quarenta","cinquenta","sessenta","setenta","oitenta","noventa","cem");
    $centenas= array("","cento","duzentos","trezentos","quatrocentos","quinhentos","seisssentos","setessentos","oitossentos","novessentos","mil");


    $numero= $_REQUEST["txtnumero"];
    if ($numero <20){
    print $unidade[$numero];
    }
    else {
    if ($numero <100) {
    $exdezenas = substr($numero,0,1);
    $exunidade = substr($numero,1,1);
    print $dezenas[$exdezenas] ." e ". $unidade[$exunidade];
    } else {
    $excentenas = substr($numero,0,1);
    $exdezenas = substr($numero,1,1);
    $exunidade = substr($numero,2,1);
    print $centenas[$excentenas] ." e ". $dezenas[$exdezenas] ." e ". $unidade[$exunidade];
    }}


    ?>

  2. #2

    Padrão Re: Duvidas com php

    Não analisei o código completo, mas não seria melhor você testar as dezenas e unidades após a centena para só então imprimir ou não o "E"?

    Se observar, para todo caso acima de 100 ele imprime a centena E dezena E unidade, mas num exemplo simples, 120 por exemplo é = CENTO E VINTE e não CENTO E VINTE E ZERO.

    No caso do zero no meio do número sumir é justamente por conta da sintaxe da substr para dezenas, não existe dezena começada em zero.

  3. #3
    Analista de Sistemas Avatar de MDdantas
    Ingresso
    Apr 2007
    Localização
    Caruaru - Pernambuco
    Posts
    422

    Padrão Re: Duvidas com php

    PRIMEIRO:

    Entenda que o comando substr (quando você conhece a posição de início de uma substring desejada) recebe a string principal e a posição de início da substring a ser obtida.

    veja a sintaxe:

    (string) substr(<string>, <posição_inicial>[, <tamanho_substring>]);

    retorno: a substring constituída pela posição inicial até atingir o final da string principal ou alcançar o tamanho da substring.


    SEGUNDO:

    A partir do comando substr é que vc determina a posição no array. Nosso colega acima está certíssimo, cuidado na hora do comando PRINT ou ECHO.

    Verifique a sua posição no array e tente utilizar o comando strlen pra determinar o tamanho da string e assim obter o valor para desejado para usar o comando de controle IF.

  4. #4

    Padrão

    Citação Postado originalmente por KiritoKaiba Ver Post
    olá galera estou com problemas para montar um código que preciso entregar ate domingo, preciso fazer um código em php que mostre o numero digitado por extenso usando substr, eu cheguei perto, mas ainda está havendo bugs, quando escrevo "111", ele escreve "cento e e um", ou quando usou qual numero com zero ele escreve o zero, se eu digitar por exemplo 109, ele escreve "cento e e nove", ou 100 "cento e e zero" e assim vai, não sei como resolver, vou postar o código aki
    <?php


    $unidade = array("zero","um","dois","três","quatro","cinco","seis","sete","oito","nove","dez","onze","doze","treze","quatorze","quinze","dezesseis","dezessete","dezoito","dezenove");
    $dezenas = array("","","vinte","trinta","quarenta","cinquenta","sessenta","setenta","oitenta","noventa","cem");
    $centenas= array("","cento","duzentos","trezentos","quatrocentos","quinhentos","seisssentos","setessentos","oitossentos","novessentos","mil");


    $numero= $_REQUEST["txtnumero"];
    if ($numero <20){
    print $unidade[$numero];
    }
    else {
    if ($numero <100) {
    $exdezenas = substr($numero,0,1);
    $exunidade = substr($numero,1,1);
    print $dezenas[$exdezenas] ." e ". $unidade[$exunidade];
    } else {
    $excentenas = substr($numero,0,1);
    $exdezenas = substr($numero,1,1);
    $exunidade = substr($numero,2,1);
    print $centenas[$excentenas] ." e ". $dezenas[$exdezenas] ." e ". $unidade[$exunidade];
    }}


    ?>
    talvez ajude
    http://www.vivaolinux.com.br/script/...os-por-extenso