Médiaforma

PHP MySQL – Exercice sur le filtrage de tableaux

Print Friendly

Énoncé de l’exercice

Définissez une fonction qui filtre les adresses mail afin de n’afficher que les adresses valides.

Les adresses à filtrer se trouvent dans ce tableau numéroté :

$adresses = array("nom.com", "nom@fai.com", "nom@fai", "nom.prenom@fai.com", "nom@fai.fr", "nom@t.fr");

Pour qu’une adresse mail soit considérée comme valide, elle doit respecter les trois conditions suivantes :

  • Contenir un caractère « @ »
  • Contenir au moins un caractère « . »
  • Comporter au moins trois caractères entre le @ et le dernier point

Pour résoudre ces problèmes, vous aurez besoin des fonctions suivantes :

  • strpos(chaine, rech) qui retourne la première position de rech dans chaine
  • strrpos(chaine, rech) qui retourne la dernière position de rech dans chaine

Solution

Faites une pause dans la vidéo pour vous permettre de saisir le code. Poursuivez la vidéo pour voir la solution.

Dans un premier temps, le tableau $adresses est défini.

Dans un deuxième temps, le tableau est filtré avec la fonction array_filter.

Enfin, dans un troisième temps, les données contenues dans le tableau filtré, c’est-à-dire les adresses e-mail valides, sont affichées.

Examinons la fonction filtreEmail.

Le caractère @ est recherché dans la chaîne passée en argument. Si le résultat retourné pat la fonction strpos est nul, le caractère @ n’a pas été trouvé.

La position du dernier point dans la chaîne est alors recherchée avec la fonction strrpos.

Si le caractère @ a été trouvé, si un point décimal a été trouvé et s’il est distant du @ d’au moins trois caractères, l’adresse email est considérée valide. La valeur true est alors retournée. L’adresse email est donc conservée dans le tableau résultat.

Dans le cas contraire, l’adresse email est invalide. Dans ce cas, la valeur false est retournée, ce qui provoque la suppression de l’adresse du tableau résultat.

<?php
  function filtreEmail($data){
    $arobas = strpos($data, "@");
    $dernierPoint = strrpos($data,".");
    if (($arobas!=false) &&
      ($dernierPoint!=false) &&
      ($dernierPoint - $arobas >= 3))
    return true;
    else
    return false;
  }

  $adresses = array("nom.com", "nom@fai.com", "nom@fai", "nom.prenom@fai.com", "nom@fai.fr", "nom@t.fr");
  $adressesValides = array_filter($adresses, "filtreEmail");
  foreach($adressesValides as $element)
    echo $element."<br>";
?>

 

Vous avez aimé cet article ? Partagez-le avec vos réseaux...
 
Comments

No comments yet.

Leave a Reply