Ако данните идват от CSV файл, трябва да запомните, че всички стойности ще бъдат низове (дори числовите низове все още имат тип низ).
Така че не можете да използвате is_int()
/is_float()
/etc., защото това ви казва само за типа или променливата. Можете да използвате is_numeric()
за да проверите стойността, но това ще позволи неща като експоненциална нотация като "+0123.45e6". Понякога ctype_digit()
може да бъде полезно за тестване на цели числа поради тази причина, тъй като ще позволи само числата 0-9 да присъстват в низ, за да върне вярно.
Регулярните изрази също могат да се използват за идентифициране на типове данни, базирани на шаблони, но трябва да следите за производителност, когато работите с големи набори от данни. Почти винаги е препоръчително от гледна точка на производителността да използвате preg_
семейство от функции вместо ereg
функции.
Ако валидирате неща като типове ENUM или SET, вероятно ще трябва да направите масив, съдържащ легални стойности (или да ги извлечете със заявка) и след това да проверите стойността спрямо тях с in_array()
.
За полета CHAR/VARCHAR можете да анализирате дефиницията на колона и след това да проверите дали дължината на стойността попада в рамките на ограниченията.
Ако типът NULL е разрешен за някоя от колоните ви, трябва също да проверите това (и вероятно да картографирате празни стойности или низа „NULL“ към действителна стойност NULL).
Ако искате наистина да избегнете тези стойности правилно, разгледайте използването на подготвени изрази и разширението PDO (PHP Data Objects). Това позволява на MySQL правилно да избягва данните въз основа на типа. (Можете също да използвате подготвени изрази с MySQLi.)
Ако търсите конкретни типове данни и как да ги идентифицирате, тогава може да искате да редактирате въпроса си, за да улесните по-пълните отговори.