Если данные поступают из файла CSV, вы должны помнить, что все значения будут строками (даже числовые строки по-прежнему имеют строковый тип).
Таким образом, вы не можете использовать is_int()
/ is_float()
/ и т. Д., Потому что это говорит вам только о типе или переменной. Вы можете использовать is_numeric()
для проверки значения, но это позволит использовать такие вещи, как экспоненциальная запись, например "+ 0123.45e6". Иногда ctype_digit()
может быть полезно для проверки целых чисел по этой причине, так как он будет позволять присутствовать только числам 0-9 в строке, чтобы он возвращал true.
Регулярные выражения также можно использовать для определения типов данных на основе шаблонов, но при работе с большими наборами данных нужно следить за повышением производительности. С точки зрения производительности почти всегда рекомендуется использовать семейство функций preg_
вместо функций ereg
.
Если вы проверяете такие вещи, как типы ENUM или SET, вам, вероятно, потребуется создать массив, содержащий допустимые значения (или извлечь их с помощью запроса), а затем сравнить их с помощью in_array()
.
Для полей CHAR / VARCHAR вы можете проанализировать определение столбца, а затем проверить, соответствует ли длина значения ограничениям.
Если тип NULL разрешен в любом из ваших столбцов, вам также необходимо проверить это (и, возможно, сопоставить пустые значения или строку «NULL» с фактическим значением NULL).
Если вы действительно хотите избежать этих значений, изучите использование подготовленных операторов и расширения PDO (объекты данных PHP). Это позволяет MySQL правильно экранировать данные в зависимости от типа. (Вы также можете использовать подготовленные операторы с MySQLi.)
Если вы ищете конкретные типы данных и способы их идентификации, возможно, вы захотите отредактировать свой вопрос, чтобы упростить более полные ответы.