Avant de convertir une chaine en float via un cast (float), je veux être certain que le format de la chaine soit correcte.
Je n'accepte que :
- une chaine qui contient "entier(s).entier(s)" (test avec un preg_match)
- ou une chaine composée de caractères de 0 à 9 (j'utilise le ctype_digit qui fait ça simplement)
preg_match va trouver "4.5", mais aussi "nimportequoi4.5" ou "4.5nimportequoi"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 function str_is_a_float ($arg_str) { $pattern ='`([0-9]{0,}+[.]+[0-9]{0,})`'; // float only if(!(preg_match($pattern, $arg_str)|ctype_digit($arg_str))) return (FALSE); // float only or integer only return (TRUE); }
Je n'arrive pas a placer une assertion avant et arrière pour n'autoriser que mon motif et seulement lui seul !
Partager