Foros del Web » Programando para Internet » PHP »

problema con parseo (is_int)

Estas en el tema de problema con parseo (is_int) en el foro de PHP en Foros del Web. Hola tengo una pregunta muy basica aca. debo de trabajar con enteros en una funcion y debo de asegurarme que la entrada de datos sea ...
  #1 (permalink)  
Antiguo 21/12/2009, 09:50
Avatar de Muzztein  
Fecha de Ingreso: agosto-2002
Ubicación: Hangar 18
Mensajes: 1.703
Antigüedad: 21 años, 8 meses
Puntos: 16
problema con parseo (is_int)

Hola

tengo una pregunta muy basica aca.

debo de trabajar con enteros en una funcion y debo de asegurarme que la entrada de datos sea de este tipo de dato y estoy teniendo problemas con la funcion is_int

cuando tengo esto

is_int(1101)

la funcion me devuelve true

pero si tengo esto

is_int("1101")

la funcion me devuelve false.

como puedo hacer para que mi function, por mas que le pasen un string, entienda el valor como un entero, en el caso que sea entero.

existe alguna funcion tryparse en php o similar ????

busque por google pero no pille nada.

alguna ayuda

de antemano gracias
  #2 (permalink)  
Antiguo 21/12/2009, 09:54
Avatar de MarioAraque
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Valencia
Mensajes: 1.398
Antigüedad: 14 años, 6 meses
Puntos: 265
Respuesta: problema con parseo (is_int)

Proba hacer una conversion explicita:

is_int((int)"1101")

Funciona?

Saludos.
  #3 (permalink)  
Antiguo 21/12/2009, 09:54
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: problema con parseo (is_int)

is_int((int) "1101")

saludos!

PD: me ganaron ToT
__________________
More about me...
~ @rhyudek1
~ Github
  #4 (permalink)  
Antiguo 21/12/2009, 10:08
Avatar de Muzztein  
Fecha de Ingreso: agosto-2002
Ubicación: Hangar 18
Mensajes: 1.703
Antigüedad: 21 años, 8 meses
Puntos: 16
Respuesta: problema con parseo (is_int)

gracias por la ayuda, pero veran, estoy tratando de checar por el tipo de dato que estan ingresando.
si sigo sus instrucciones, el valor siempre será true.

por ejemplo

is_int((int) "1101") será true

is_int((int) "gjhasgdhj") tambien sera true , ya que la funcion de parseo (int) si le pasas un valor alfabetico, devolvera un cero, y eso siempre sera un entero.

lo que ando buscando es algo que me permita discernir que tipo de dato es la variable que me pasan.

si me pasan "10101" que de true, pero si me pasan un "kjsadgjhgsd" que me devuelva false y si me pasas un 12121.12121 que devuelva false

de antemano muchisimas gracias
  #5 (permalink)  
Antiguo 21/12/2009, 10:09
Avatar de MarioAraque
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Valencia
Mensajes: 1.398
Antigüedad: 14 años, 6 meses
Puntos: 265
Respuesta: problema con parseo (is_int)

Ah pero estas hablando de formularios!!

Entonces no uses la conversion explicita, usa esta funcion:

is_numeric($valor).

Saludos.
  #6 (permalink)  
Antiguo 21/12/2009, 10:16
Avatar de Muzztein  
Fecha de Ingreso: agosto-2002
Ubicación: Hangar 18
Mensajes: 1.703
Antigüedad: 21 años, 8 meses
Puntos: 16
Respuesta: problema con parseo (is_int)

:) gracias, pero por lo que he probado is_numeric no discierne entre enteros y valores reales. :(

is_numeric(1212 es true

pero

is_numeric(1212.22)

tambien es true


no existe un tryparse en php?

ya no se me ocurre que mas hacer
  #7 (permalink)  
Antiguo 21/12/2009, 10:18
Avatar de MarioAraque
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Valencia
Mensajes: 1.398
Antigüedad: 14 años, 6 meses
Puntos: 265
Respuesta: problema con parseo (is_int)

Pero vos como queres usar la funcion? Yo por ejemplo si tengo un campo edad en un formulario de registro, y quiero comprobar que ese valor es numerico, uso is_numeric. Si pone 24 sale bien, si pone 2_4 sale mal. Ahora si llamo a la funcion del modo que vos lo haces (is_numeric("34")) va a dar mal, tengo que usar is_int.

Depende mucho de donde la uses, como te dije.

Saludos.
  #8 (permalink)  
Antiguo 21/12/2009, 10:20
Avatar de darkasecas  
Fecha de Ingreso: marzo-2005
Ubicación: SantaCata, NL, Mexico
Mensajes: 1.553
Antigüedad: 19 años, 1 mes
Puntos: 77
Respuesta: problema con parseo (is_int)

Hasta donde se no existe, tendrias que crearte tu propia funcion que lo haga, tal vez combinando is_numeric, is_int y/o casteos a int..
  #9 (permalink)  
Antiguo 21/12/2009, 10:24
Avatar de Muzztein  
Fecha de Ingreso: agosto-2002
Ubicación: Hangar 18
Mensajes: 1.703
Antigüedad: 21 años, 8 meses
Puntos: 16
Respuesta: problema con parseo (is_int)

bueno, los valores que estoy revisando vienen de un servicio XML de un banco.

y en mi negocio que trata de normalizar DATA, me debo asegurar que algunos valores sean enteros para poder hacerles un tratamiento, y cuando son reales les debo hacer otro tratamiento. y cuando sean alfanumericos que vaya reportando errores.
  #10 (permalink)  
Antiguo 21/12/2009, 12:27
Avatar de _ssx  
Fecha de Ingreso: mayo-2003
Ubicación: mX
Mensajes: 683
Antigüedad: 21 años
Puntos: 60
Respuesta: problema con parseo (is_int)



Hay una función interesante en php.net

Código PHP:
function isint$mixed )
{
    return ( 
preg_match'/^\d*$/'  $mixed) == );

o bien

Código PHP:
function isInteger($input){
    return(
ctype_digit(strval($input)));

__________________
Escribe tu código de forma que refleje, y saque a relucir,lo mejor de tu carácter personal
www.oscararzola.com/blog
Principios de un programador

Última edición por _ssx; 21/12/2009 a las 12:30 Razón: Update
  #11 (permalink)  
Antiguo 21/12/2009, 13:29
Avatar de Muzztein  
Fecha de Ingreso: agosto-2002
Ubicación: Hangar 18
Mensajes: 1.703
Antigüedad: 21 años, 8 meses
Puntos: 16
Respuesta: problema con parseo (is_int)

OH !!!

Muchisisisisísimas gracias !!!!




ahi te van miles de karmas para todos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:57.