-rafael- 1 Denunciar post Postado Setembro 21, 2010 ola a todos tenho o seguinte dado no meu banco: 123456 ai para exibir ele com os ponto eu uso preg_replace("/([0-9]{1,2})([0-9]{2,3})([0-9]{3})/","\\1.\\2.\\3",$dados['num']) e o resultado é 123.456 acontece que ja esta em vias de acrescentar mais um algarismo neste número (virando a casa do milhão), sendo que o mesmo ficaria 1234567 eu tentei preg_replace("/([0-9]{1,2})([0-9]{2,3})([0-9]{3})/","\\1.\\2.\\3",$dados['num']) e o reultado 12.34.567 eu tentei preg_replace("/([0-9]{1,2})([0-9]{3})([0-9]{3})/","\\1.\\2.\\3",$dados['num']) e o reultado 1.234.567, mas ai os números de 6 algarismos ficam sem o ponto 123456 ha tambem o problema de números com traços ex: 1.234.567-8, 123.456-7 (são outros tipos de numeros, diferentes dos que eu citei acima) como posso resolver isso?? obrigado Compartilhar este post Link para o post Compartilhar em outros sites
criatividade zero 17 Denunciar post Postado Setembro 21, 2010 number_format acho que resolve http://php.net/manual/en/function.number-format.php Compartilhar este post Link para o post Compartilhar em outros sites
-rafael- 1 Denunciar post Postado Setembro 21, 2010 é resolve mesmo!!! mas e os números com traço??? ex: 1.234.567-8, 123.456-7 Compartilhar este post Link para o post Compartilhar em outros sites
criatividade zero 17 Denunciar post Postado Setembro 21, 2010 depende da aplicação numeros com . você pode usar number_format numeros com - você usa preg_replace ou number_format qual uso do numero com -? Compartilhar este post Link para o post Compartilhar em outros sites
-rafael- 1 Denunciar post Postado Setembro 21, 2010 são numeros de um sistema da empresa eles estao armazenados em formato numero no banco. entao, o numero sem '-' é para uma coisa e com o '-' para outra. os numeros sem -, ta resolvido o problema agora é os com o - com o preg_replace nao dei conta obrigado pela ajuda Compartilhar este post Link para o post Compartilhar em outros sites
criatividade zero 17 Denunciar post Postado Setembro 21, 2010 ha algum padrão numerico, qtd de numeros? oculte o ultimo numero e use number_format no resto, depois você acrescenta - e o ultimo numero 1234567-8 1234567 + number_format 1.234.567-8 Compartilhar este post Link para o post Compartilhar em outros sites
-rafael- 1 Denunciar post Postado Setembro 21, 2010 não existe um padrao extamente. é um numero sequencial - digito verificador acontece que é armazenado tudo junto no banco entao o numero 1.234.567-8 vai para o banco 12345678 essa parte é facil, é so remover os pontos e traços com ERs. mas o duro é coloca-los de volta para exibir na tela. Compartilhar este post Link para o post Compartilhar em outros sites
Matheus Tavares 167 Denunciar post Postado Setembro 21, 2010 Faz assim, tio. Resultado desejado: 0.000.000 String de exemplo: 8777123 Código: <?php $string = '8777123'; //deve tornar-se: 8.777.123 echo preg_replace('/^([0-9])([0-9]{3})([0-9]{3})$/','$1.$2.$3',$string); ?> Resultado: http://haxor.com.br/imasters/ EDIT: Foi mal, não tinha lido todo o post. No título você colocou um padrão, e na discussão surgiu essa história de dígito verificador. Nesse caso faça assim: <?php $string = '8777123'; $string = preg_replace('/^([0-9])([0-9]{3})([0-9]{3})([0-9])?$/','$1.$2.$3-$4',$string); echo ($string[strlen($string)-1]=='-') ? substr($string,0,-1) : $string; ?> Resultado: 8.777.123 ----- <?php $string = '87771238'; //APENAS ADICIONEI O NUMERO 8 AQUI $string = preg_replace('/^([0-9])([0-9]{3})([0-9]{3})([0-9])?$/','$1.$2.$3-$4',$string); echo ($string[strlen($string)-1]=='-') ? substr($string,0,-1) : $string; ?> Resultado: 8.777.123-8 ( http://haxor.com.br/imasters/index2.php ) Resumindo: Se tiver digito verificador, ele separa com traco. Senão não exibe o dígito, nem o traço. Caso o número de caracteres seja dinâmico, existe outra maneira de se fazer: Retira o último dígito da string com substr, com o restante da string use number_format ou preg_replace, e depois adicione esse dígito retirado novamente, já com o traço. Isso é bem fácil, basta você ver o problema como um TODO e ter calma para resolver. Tchauzin :) Compartilhar este post Link para o post Compartilhar em outros sites
-rafael- 1 Denunciar post Postado Setembro 22, 2010 ok entendi a lógica fiz uma função para fazer o serviço segue: function formata_num($numero){ $num = substr($numero, 0, -1); $dig = substr($numero, -1); $num = number_format($num, 0, '', '.'); $num_f = $num . '-' . $dig; return $num_f; } obrigado a todos!!! resolvido!!! Compartilhar este post Link para o post Compartilhar em outros sites
criatividade zero 17 Denunciar post Postado Setembro 22, 2010 bacana http://forum.imasters.com.br/public/style_emoticons/default/joia.gif Compartilhar este post Link para o post Compartilhar em outros sites