Je sais que cela peut sembler une question vraiment fictive, mais j'essaie de m'assurer que la chaîne fournie est d'un format numérique/décimal pour pouvoir l'utiliser ultérieurement avec la fonction number_format () de PHP.
Comment pourrais-je le faire - disons que quelqu'un tape 15h00 dans le champ de texte - quelle expression régulière et quelle fonction php devrais-je utiliser pour supprimer les points-virgules et lui faire retourner uniquement les caractères valides.
preg_match () retourne un tableau - donc je ne peux pas transmettre le résultat à number_format () à moins que je ne l'implode () ou quelque chose comme ça.
Votre aide serait très appréciée.
Utiliser is_numeric ou intval est probablement le meilleur moyen de valider un nombre, mais pour répondre à votre question, vous pouvez utiliser plutôt preg_replace . Cet exemple supprime tous les caractères non numériques:
$output = preg_replace( '/[^0-9]/', '', $string );
Pour supprimer tout ce qui n'est pas un nombre:
$output = preg_replace('/[^0-9]/', '', $input);
Explication:
[0-9]
correspond à n'importe quel nombre compris entre 0 et 9 inclus.^
annule un modèle []
.[^0-9]
correspond à tout ce qui n'est pas un nombre, et puisque nous utilisons preg_replace
, ils seront remplacés par rien ''
(second argument de preg_replace
).Vous pouvez essayer celui-là:
$string = preg_replace('/[^0-9]/', '', $string);
À votre santé.
utilisez la fonction php is_numeric
intégrée pour vérifier si la valeur est numérique.
Vous pouvez faire quelque chose comme ceci si vous ne voulez que des nombres entiers.
function make_whole($v){
$v = floor($v);
if(is_numeric($v)){
echo (int)$v;
// if you want only positive whole numbers
//echo (int)$v = abs($v);
}
}