Formation PUB010 : PHP, 2025 La validation d'un formulaire Web

44.5 Les conversions et vérifications de type


Même si PHP n'est pas un langage fortement typé, il arrive que nous ayons besoin de convertir une donnée dans un autre type.

Par exemple, lors de la validation d'un formulaire Web, on voudra s'assurer que la valeur qui doit être enregistrée dans un champ de type integer soit effectivement un entier.

Conversion de type

Pour effectuer les conversions de type, les fonctions PHP suivantes vous seront utiles :

PHP

$quantite = intval($_POST['quantite']);

Vérification de type

Vous pourriez également avoir besoin de vérifier le type sans pour autant le modifier. Les principales fonctions de vérification de type sont :

  • is_array()
  • is_bool()
  • is_double()
  • is_float()
  • is_int() ou son alias is_integer()
  • is_null()
  • is_numeric() : Permet de vérifier si le paramètre est une valeur est numérique ou encore une chaîne qui représente une valeur numérique.
  • is_string()
  • ctype_digit() : Permet de vérifier si chacun des caractères d'une chaîne est un chiffre. Si le paramètre est numérique, retournera toujours false. Notez que à partir de PHP 8.1.0, passer un argument différent d'une chaîne est obsolète.

Voici quelques exemples d'utilisation.

PHP

if (! is_bool($actif)) {

    $actif = true;

}

PHP

if (!ctype_digit($_POST['annee'])) {
    $message .= 'L\'année doit être un entier.<br \>';
}

PHP

$numero = 36;
$numeroPointDecimal = 12.34;
$numeroNegatif = -45;
$chaineNumero = '36';
$chaineNumeroPointDecimal = '12.34';
$chaineNumeroVirguleDecimale = '12,34';
$chaineNumeroNegatif = '-45';

echo 'is_numeric($numero)' . is_numeric($numero);   // true
echo 'is_numeric($numeroPointDecimal)' . is_numeric($numeroPointDecimal);   // true
echo 'is_numeric($numeroNegatif)' . is_numeric($numeroNegatif);   // true

echo 'is_numeric($chaineNumero)' . is_numeric($chaineNumero);   // true
echo 'is_numeric($chaineNumeroPointDecimal)' . is_numeric($chaineNumeroPointDecimal);   // true
echo 'is_numeric($chaineNumeroVirguleDecimale)' . is_numeric($chaineNumeroVirguleDecimale);   // false
echo 'is_numeric($chaineNumeroNegatif)' . is_numeric($chaineNumeroNegatif);   // true

echo 'ctype_digit($numero)' . ctype_digit($numero);   // false en PHP 7. Obsolète à partir de PHP 8.1.
echo 'ctype_digit($numeroPointDecimal)' . ctype_digit($numeroPointDecimal);   //false en PHP 7. Obsolète à partir de PHP 8.1.
echo 'ctype_digit($numeroNegatif)' . ctype_digit($numeroNegatif);   //false en PHP 7. Obsolète à partir de PHP 8.1.

echo 'ctype_digit($chaineNumero)' . ctype_digit($chaineNumero);   // true
echo 'ctype_digit($chaineNumeroPointDecimal)' . ctype_digit($chaineNumeroPointDecimal);   // false
echo 'ctype_digit($chaineNumeroVirguleDecimale)' . ctype_digit($chaineNumeroVirguleDecimale);   // false
echo 'ctype_digit($chaineNumeroNegatif)' . ctype_digit($chaineNumeroNegatif);   // false

Retrouver le type d'une variable

La fonction gettype() permet d'effectuer un traitement particulier selon le type d'une variable.

PHP

if (gettype($nombre) != "integer")) {

    ...

}

Retrouver la classe d'une variable de type objet

Dans le cas où le type d'une variable est un objet, la fonction get_class() permet de retrouver la classe de cet objet.

PHP

if ("MaClasse" == get_class($variable)) {

    ...

}

Pour plus d'information

« Fonctions de gestion des variables ». PHP. http://php.net/manual/fr/ref.var.php

« PHP isset() vs empty() vs is_null() ».Virendra's TechTalk. https://www.virendrachandak.com/techtalk/php-isset-vs-empty-vs-is_null/

▼Publicité

Veuillez noter que le contenu de cette fiche vous est partagé à titre gracieux, au meilleur de mes connaissances et sans aucune garantie.
Merci de partager !
Soumettre