Separar milhar no php

1,555 views
Skip to first unread message

Renato

unread,
Jan 29, 2010, 11:31:42 PM1/29/10
to list...@googlegroups.com

Olá pessoal!

 

Minha dúvida é a seguinte:

 

Não sei se pode ser resolvida pelo PHP ou MYSQL!

 

Na minha tabela do Mysql tem um campo que trabalha com números int.

 

Se eu cadastar 31000, na hora que puxar pelo PHP, queria que aparecesse 31.000

 

Tentei usar o str_replace, mas num deu muito certo não!!! 

 

 

Obrigado!

Abraços a todos!

bsb infor

unread,
Jan 30, 2010, 6:39:32 AM1/30/10
to list...@googlegroups.com
Olá Renato,

vê se isso resolve:

$numero = 31000;
$novo_numero = preg_replace('/([\d]{1,})([\d]{3})/','$1.$2',$numero);


--
Natanael L. Freire
www.comocriarsites.com.br
www.comofazerumblog.com.br
http://frete.w21studio.com




2010/1/30 Renato <jrolive...@gmail.com>
--
============================================================
LEIAM SEMPRE AS REGRAS DA LISTA:
http://groups.google.com.br/group/listaphp/web/regras-da-lista-php
--
LISTA PHP > http://groups.google.com.br/group/listaphp
--
REVISTA PHP > http://www.revistaphp.com.br
--
AJAX-BRASIL > http://groups.google.com/group/ajax-brasil
--
PYTHON-GOOGLE > http://groups.google.com.br/group/python-google
--
DOTNET-BRASIL > http://groups.google.com.br/group/dotnet_br
============================================================

Eduardo Barros

unread,
Jan 30, 2010, 6:45:55 AM1/30/10
to list...@googlegroups.com
Veja a função number_format()

http://br2.php.net/manual/pt_BR/function.number-format.php


Att,
Eduardo Barros
Programador PHP / JQuery / MySQL
www.eduardobarros.com
www.siteactive.com.br




2010/1/30 bsb infor <bsbi...@gmail.com>

bsb infor

unread,
Jan 30, 2010, 7:07:58 AM1/30/10
to list...@googlegroups.com
Eduardo,

você já testou com o number_format?

se você usar o number_format assim o resultado seria esse:

$numero = 31000;
echo number_format($numero, 3, '.', '');
saida: 31000.000

O renato quer que a saida seja: 31.000

Nota-se que, neste caso, o number_format não se aplica. Pelo menos é o que penso, por isso acho que o preg_replace é a solução.


Suponha que você queira formatar um cnpj, como se faria isso? Pode se usar o preg_replace assim:
$cnpj = 23349838719;
$novo_cnpj = preg_replace('/([\d]{2})([\d]{3})([\d]{3})([\d]{4})/','$1.$2.$3/$4-',$cnpj);

Pronto, o cnpj esta formatado.

Se alguem tiver solução mais simples, posta ai, estamos aqui pra aprender sempre mais.
2010/1/30 Eduardo Barros <edu...@gmail.com>

Rogerio Pelarin

unread,
Jan 30, 2010, 7:09:05 AM1/30/10
to list...@googlegroups.com
number_format($number);
isso ira retornar 32,000

mas se voce precisa de . ao inves de , 
use
number_format($number, 0, '','.');

bsb infor

unread,
Jan 30, 2010, 7:28:41 AM1/30/10
to list...@googlegroups.com
Mas se ao inves de 31000 o numero for 3100032 e o renato desejar que a saida seja: 3100.032 o number_format resolve isso?

Abraço a todos
2010/1/30 Rogerio Pelarin <tril...@gmail.com>

--

Eduardo Barros

unread,
Jan 30, 2010, 7:24:34 AM1/30/10
to list...@googlegroups.com
Ok.. mastigadinho.. :)

$numero=31000;
echo number_format($numero,0,"",".");
saida: 31.000



2010/1/30 bsb infor <bsbi...@gmail.com>

Edgar da Silva (Fly2k)

unread,
Jan 30, 2010, 8:07:11 AM1/30/10
to list...@googlegroups.com
Não. Pois, o number_format não advinha quantas casas de um inteiro vc
usou para guardar numero decimais.

O que é um grande erro.


Mas se mesmo assim optar por essa forma, divida o valor por 1000 antes
de passar para o number_format, aí sim ele saberá o que fazer.

--
Abraços
Edgar Ferreira da Silva
Engenheiro de Software
Zend PHP5 Certified Engineer

Araras - SP
(19) 8176-9942
http://edgarfs.com.br
http://twitter.com/edgarfs

Eduardo Barros

unread,
Jan 30, 2010, 7:49:02 AM1/30/10
to list...@googlegroups.com
Natanael, certamente não resolveria. Mas resolveu o problema da forma que foi colocado. Se ele pedisse para formatar CNPJ a solução seria outra.

Cuidado para não reiventar a roda!



Att,
Eduardo Barros
Programador PHP / JQuery / MySQL
www.eduardobarros.com
www.siteactive.com.br




2010/1/30 bsb infor <bsbi...@gmail.com>
Mas se ao inves de 31000 o numero for 3100032 e o renato desejar que a saida seja: 3100.032 o number_format resolve isso?

Gilberto M O Otani

unread,
Jan 30, 2010, 8:52:35 AM1/30/10
to list...@googlegroups.com
Acho q o Natanael se confundiu, achando que 31.000 era 31 com 3 casas
decimais. O que eu entendi foi q ele só queria colocar o separador de
milhar, e isso o number_format faz.

--
Gilberto M O Otani
gilbert...@gmail.com

Leo Baiano

unread,
Jan 30, 2010, 8:55:35 AM1/30/10
to list...@googlegroups.com

bsb infor

unread,
Jan 30, 2010, 11:03:03 AM1/30/10
to list...@googlegroups.com
Realmente eu devo ter entendido de forma errada, mas de qualquer forma, fica ai a solução, number_format()

Abraço a todos.
2010/1/30 Leo Baiano <ljuni...@gmail.com>
Reply all
Reply to author
Forward
0 new messages