d5:a01

  • Comprendre l’intérêt des expressions régulières dans le traitement de chaînes de caractères.
  • Savoir comparer une approche “classique” (boucles, conditions, fonctions de base) avec une approche utilisant des regex.
  • Renforcer l’analyse de code et la capacité à améliorer un programme existant.
  • Prendre l’habitude de tester et valider ses résultats avec des cas concrets.

Durée : 4 heures maximum

On vous demande de vérifier si une chaîne saisie par un utilisateur est bien une adresse e-mail valide.

  1. fichier Formulaire.php : Créer un formulaire HTML avec un champ de type “email” et un bouton “Valider”
    1. Quels sont les cas qui passent mais ne devraient pas ?
  2. fichier Phase1.php : Reprendre le formulaire et compléter la validation du champ email en utilisant uniquement des fonctions PHP de base (strpos, substr, strlen, …), sans RegEx, vérifiez que l’email contient :
    • un point . après le @ (le domaine doit contenir un point)
    • au moins 3 caractères avant le @
    • au moins 2 caractères après le dernier point
    • au moins 2 caractère avant le dernier point

Question:

  1. Quelle est la lisibilité du code ?

Avec une RegEx, on peut écrire une règle compacte qui englobe toutes les conditions.

On utilise preg_match() qui retourne 1 si la chaîne correspond au motif.

Réécrivez le contrôle d’email en utilisant preg_match et une expression régulière.

Exemple de départ (RegEx1):

if (preg_match("/^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,}$/i", $email)) {
    echo "Email valide";
} else {
    echo "Email invalide";
}
  1. quelle validation est faite ? Décomposer la règle. Tester avec un fichier Phase2a.php
  2. fichier Phase2b.php : écrire avec une RegEx la même validation que dans la phase1

Question:

  1. Comparez la taille et la lisibilité avec la solution de la phase 1.
  2. Testez plusieurs cas limites (test@.com, user@site, u@d.fr, etc.).
  3. Quels sont les cas particuliers encore non couverts (accent, majuscules, domaines spécifiques, …)

A Savoir: Savoir décortiquer une expression régulière.

Proposez trois scripts indépendants :

  1. Validation d’un mot de passe
    • Au moins 8 caractères
    • Au moins une majuscule, une minuscule et un chiffre
      • Regex suggérée : “/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{8,}$/”
  2. Extraction d’informations d’un texte
    • À partir d’un texte contenant des numéros de téléphone français (ex: 01 23 45 67 89, 06-12-34-56-78), utilisez une regex pour extraire tous les numéros.
  3. Remplacement automatique
    • À partir d’un texte, remplacez tous les mots grossiers par ***.

Support activité

  • d5/a01.txt
  • Dernière modification : 2025/09/12 09:15
  • de dthevenot