25 Jan2016
Contrôler une chaine de caractères
Objectif:
Utiliser des fonctions usuelles pour vérifier les chaînes de caractères .
Énoncé :
- Rédigez un script qui permet de tester si une chaîne ne contient que de lettres .
- Ecrire un script qui teste si une chaîne de caractères contient le caractère '@' (le cas d'une adresse e-mail).
- Utiliser les expressions régulières pour vérifier si une chaîne de caractères correspond à :
- Un numéro de téléphone sous la forme : 00 00 00 00 00 ou 00-00-00-00-00
- Un matricule qui commence par 3 lettres et se termine par 2 chiffres (exemple "abc12").
- pour cet exercice on va utiliser la fonction ctype_alpha qui vérifie si une chaîne est alphabétique ou non .
$ch="PHP7"; if(ctype_alpha($ch)){ echo "$ch ne contient que de lettres "; } else{ echo "$ch contient au moins un chiffre "; }
-
On peut utiliser pour ce test simple (qui est insuffisant pour une adresse email) la fonction strpos qui renvoie la position de la première occurrence d'une sous-chaîne dans une chaîne et renvoie false si elle trouve aucune occurrence .
$email="contactexelib.com@"; if(strpos($email,"@")===false){ echo "$email n'est pas une adresse correcte"; } else{ echo "$email semble être une adresse email correcte"; }
NoteRemarquez l' utilisation de ===. == ne fonctionnerait pas par exemple strpos("@exelibe","@") renvoie 0 == false.
- On aura besoin de la fonction preg_match qui permet de faire une recherche basé sur une expression régulière.
$num1="06-66-66-66-66"; $num2="06 66 66 66 66"; $pattern="/^[0-9]{2}((\-[0-9]{2}){4}|(\s[0-9]{2}){4})$/";// \s représente l'espace if(preg_match($pattern, $num1) && preg_match($pattern, $num2)){ echo "$num1 et $num2 sont 2 numeros corrects"; } else echo "$num1 ou $num2 incorrect";
Le script pour tester un matricule qui commence par 3 lettres et se termine par 2 chiffres.$matricule="Abz32"; $pattern="/^[a-z]{3}[0-9]{2}$/i";// i pour ignorer la casse if(preg_match($pattern, $matricule)){ echo "$matricule matricule correct"; } else echo "$matricule matricule incorrect";