Hvis dataene kommer fra en CSV-fil, skal du huske, at alle værdierne vil være strenge (selv numeriske strenge har stadig en strengtype).
Så du kan ikke bruge is_int()
/is_float()
/etc., fordi det kun fortæller dig om typen eller variablen. Du kan bruge is_numeric()
for at kontrollere værdien, men dette vil tillade ting som eksponentiel notation som "+0123.45e6". Nogle gange ctype_digit()
kan være nyttigt til at teste heltal af denne grund, da det kun vil tillade tallene 0-9 at være til stede i en streng for at returnere sand.
Regulære udtryk kan også bruges til at identificere mønsterbaserede datatyper, men du skal være opmærksom på ydeevneomkostninger, når du har med store datasæt at gøre. Det er næsten altid tilrådeligt fra et præstationsperspektiv at bruge preg_
familie af funktioner i stedet for ereg
funktioner.
Hvis du validerer ting som ENUM- eller SET-typer, skal du sandsynligvis lave et array, der indeholder lovlige værdier (eller udtrække disse med en forespørgsel) og derefter kontrollere værdien mod dem med in_array()
.
For CHAR/VARCHAR-felter kan du parse kolonnedefinitionen og derefter kontrollere, om længden af værdien falder inden for begrænsningerne.
Hvis NULL-typen er tilladt i nogen af dine kolonner, skal du også kontrollere dette (og sandsynligvis afsætte tomme værdier eller strengen "NULL" til en faktisk NULL-værdi).
Hvis du rent faktisk ønsker at undslippe disse værdier korrekt, skal du undersøge brugen af forberedte sætninger og PDO-udvidelsen (PHP Data Objects). Dette giver MySQL mulighed for korrekt at undslippe data baseret på type. (Du kan også bruge forberedte udsagn med MySQLi.)
Hvis du leder efter specifikke datatyper, og hvordan du identificerer dem, vil du måske redigere dit spørgsmål for at lette mere fuldstændige svar.