Bonsoir, je doit réalise un systeme de filtre, j'ai un textarea avec dedans plusieurs email leur séparateur c'est un point virgule et lorsque je clique sur envoyé sa doit me générer plusieurs liste d'emails selon les domaines, par exemple si j'ai :
mehdi@gmail.com
test@test.fr
sa doit me générer deux liste .com et .fr avec dedans les emails correspondent.

Merci d'avance.

9 réponses


On peut pas te faire le code, tu bloque à quel niveau ? Normalement ce n'est pas très compliqué, tu fais des explode et tu utilise des boucles

Comme le dit @Grafikart, une fois le contenu de ton textarea récupéré côté PHP, un explode sur les ";" puis sur les "@" et enfin sur les "." (afin de récupérer le domaine) via différentes boucles devrait faire l'affaire ;)

Yep rien de bien compliqué :

<?php
$text = "toto@sfr.fr;tata@hotmail.com";
$emails = explode(';', $text); // Tableau contenant tous les emails

$results = array();
foreach($emails as $e) {
    $domain = array_pop(explode('.', $e)); // explode sur le . et on prend le dernier élément du tableau (=domaine normalement)
    $results[$domain][] = $e;
}
var_dump($results);

Je vois un petit problème dans ton script @JacobDelcroix, si l'email a un format semblable à "toto.tata@mail.fr", ton second explode récupèrera "tata@mail.fr" et non le "fr" recherché. Il te faut modifier ton code et ajouter une boucle intermédiaire sur laquelle on explode par rapport au @ et on ne garde que le dernier élément du tableau retourné (mail.fr logiquement) ;)

Non, ça va retourner un tableau avec 3 éléments dans ton cas :

  • toto
  • tata@mail
  • fr

Donc avec l'array_pop on récupère bien le "fr".

La oui, mais pas avec array_unshift() ;)

Effectivement, je m'étais tromper de fonction dans le code :-) (tellement tout un bouzin les fonctions array_* en PHP !) J'ai corrigé ça.

Ca, on est d'accord, et une erreur est vite arrivée ;)

Double post, nous t'avons déjà donné les fonctions à utiliser et l'algorithmie. Attendre un code tout fait n'est pas la solution, il faut cogiter un minimum, se tromper, se corriger, apprendre.