Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Rui Carlos

Verificar se o valor de um formulário é inteiro

Recommended Posts

Rui Carlos

existe alguma função em php para verificar se um valor introduzido num formulário é um inteiro? já experimentei o 'is_numeric' mas esta também devolve TRUE se forem números decimais.

Share this post


Link to post
Share on other sites
Rui Carlos

is_int()

não serve porque o valor devolvido por um formulário é sempre uma string.

o 'is_numeric' permite ver se a string corresponde a um número, mas não obriga a que seja inteiro. precisava de uma função do género da 'is_numeric' mas que devolvesse TRUE para inteiros.

Share this post


Link to post
Share on other sites
shumy

experimenta ereg com algo do genero ^[0-9]*$

Não foi testado.


Aqui há coisa de 2 anos fazia umas malhas de croché, depois fartei-me e fui para informática!

Share this post


Link to post
Share on other sites
djthyrax

is_int()

não serve porque o valor devolvido por um formulário é sempre uma string.

o 'is_numeric' permite ver se a string corresponde a um número, mas não obriga a que seja inteiro. precisava de uma função do género da 'is_numeric' mas que devolvesse TRUE para inteiros.

is_int($var+0);


Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!

Share this post


Link to post
Share on other sites
kingless

Pelo que eu saiba não existe nenhuma função que faça isso...  Queres que os numeros introduzidos no formulario sejam apenas inteiros ? se queres que os numeros introduzidos no formulario sejam inteiros podes transforma-los em inteiros... (int), float(), ceil(), floor();...

Se explicares para que serve o código talvez eu te arrenje outra solução...

Experimenta

if(ereg(',', $_POST['xpto'])) { echo "O numero não é inteiro"; }

Share this post


Link to post
Share on other sites
karva

@kingless

isso nao devolve se for inteiro, mas sim se nao tiver virgulas.

1025,00000 tem virgula, mas no entanto e um numero inteiro...


Proud LEIC-A@IST student!

Share this post


Link to post
Share on other sites
shumy

Que tal olharem para o meu post anterior! É assim tão dificil?

^[0-9]*$

e esse número 1025,0000 pode muito bem ser rejeitado.


Aqui há coisa de 2 anos fazia umas malhas de croché, depois fartei-me e fui para informática!

Share this post


Link to post
Share on other sites
Rui Carlos

Que tal olharem para o meu post anterior! É assim tão dificil?

^[0-9]*$

e esse número 1025,0000 pode muito bem ser rejeitado.

penso que isso já resolve o problema...

não vou aceitar valores com vírgulas ou pontos (mas também isso acho que era fácil de fazer com exp. regulares).


is_int($var+0);

não experimentei isso, mas penso que também não ia funcionar, pois o php consegue somar strings com inteiros...

Share this post


Link to post
Share on other sites
kingless

Que tal olharem para o meu post anterior! É assim tão dificil?

^[0-9]*$

e esse número 1025,0000 pode muito bem ser rejeitado.

Nós reparamos no teu post :D nao fiques chateado por termos tambem falado em Exp. regulares lool :D ;)

Share this post


Link to post
Share on other sites
Saco

Quanto à questão de o 1025,0000 ser rejeitado... nada mais fácil...

^[0-9]*,0*$

E depois aproveitar só até à virgula. Mas nem sei se será relevante para este caso...

Share this post


Link to post
Share on other sites
djthyrax

Boas.

ctype_digit($var) deve resultar.

Não conhecia :D Acenta que nem uma luva para aqui :D

Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!

Share this post


Link to post
Share on other sites
nuno_couto

ctype_alnum e ctype_alpha tambem são muito úteis... o primeiro só aceita sequências de numeros e letras, sem espaços nem simbolos (por exemplo 15g7a4sd) e o segundo apenas aceita letras (sem acentuação)


portalmundial.net »» criamos sites

Share this post


Link to post
Share on other sites
djthyrax

ctype_alnum e ctype_alpha tambem são muito úteis... o primeiro só aceita sequências de numeros e letras, sem espaços nem simbolos (por exemplo 15g7a4sd) e o segundo apenas aceita letras (sem acentuação)

ya, eu vi lá isso :D são bastante uteis.

Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!

Share this post


Link to post
Share on other sites
kingless

Por acaso já conhecia esta função mas nem me passou pela cabeça neste caso :D Bastente útil :D

Share this post


Link to post
Share on other sites
nuno_couto

Utilizo muito para validar dados provenientes de formulários, como medida de segurança "extra".

Por exemplo, num campo onde se introduz um nome, se criares uma variável de confirmação, por exemplo $nome_confirm em que lhe removes todas as letras acentuadas e espaços, só te devem sobrar letras. Depois disso fazes uma condicional em que usas o comando ctype_alpha($nome_confirm)

Desta forma toda e qualquer tentativa de introduzir um comando através de um campo de formulário resulta num erro... Acho que são comandos extremamente úteis em termos de segurança.


portalmundial.net »» criamos sites

Share this post


Link to post
Share on other sites
Rodinei Carlos
Em 09/12/2006 às 11:42, nuno_couto disse:

Boas.

ctype_digit($var) deve resultar.

funciona somente com valores positivos.

-10 é inteiro e não é aceito pelo ctype_digit

Share this post


Link to post
Share on other sites
thoga31
Em 04/06/2019 às 03:02, Rodinei Carlos disse:

funciona somente com valores positivos.

-10 é inteiro e não é aceito pelo ctype_digit

Este tópico tem mais de 12 anos... o membro a quem respondeste já cá não aparece há cerca de 9 anos!


Knowledge is free!

Share this post


Link to post
Share on other sites
Rodinei Carlos

A informação foi útil para mim, que encontrei neste tópico o que eu procurava, o comentário pode servir para mais pessoas futuramente.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.