Si los datos provienen de un archivo CSV, debe recordar que todos los valores serán cadenas (incluso las cadenas numéricas seguirán teniendo un tipo de cadena).
Entonces no puedes usar is_int()
/is_float()
/etc., porque eso solo te informa sobre el tipo o la variable. Podrías usar is_numeric()
para verificar el valor, pero esto permitirá cosas como la notación exponencial como "+0123.45e6". A veces ctype_digit()
puede ser útil para probar números enteros por este motivo, ya que solo permitirá que los números 0-9 estén presentes en una cadena para que devuelva verdadero.
Las expresiones regulares también se pueden usar para identificar tipos de datos basados en patrones, pero debe observar la sobrecarga de rendimiento cuando se trata de grandes conjuntos de datos. Casi siempre es recomendable desde una perspectiva de rendimiento usar el preg_
familia de funciones en lugar de ereg
funciones.
Si está validando cosas como los tipos ENUM o SET, probablemente necesitará crear una matriz que contenga valores legales (o extraerlos con una consulta) y luego compararlos con el valor con in_array()
.
Para los campos CHAR/VARCHAR, puede analizar la definición de la columna y luego verificar si la longitud del valor se encuentra dentro de las restricciones.
Si el tipo NULL está permitido en cualquiera de sus columnas, también deberá verificar esto (y probablemente asignar valores vacíos o la cadena "NULL" a un valor NULL real).
Si está buscando escapar de estos valores correctamente, considere usar declaraciones preparadas y la extensión PDO (PHP Data Objects). Esto permite que MySQL escape correctamente los datos según el tipo. (También puede usar sentencias preparadas con MySQLi).
Si está buscando tipos de datos específicos y cómo identificarlos, es posible que desee editar su pregunta para facilitar respuestas más completas.