Extraire chaine et comparer

passion
WRInaute accro
WRInaute accro
 
Messages: 3105
Inscription: 6 Jan 2006

Extraire chaine et comparer

Message le Sam Mar 10, 2007 13:56

Bonjour,

A la lecture du poste, on va certainement me dire ...bah, tu fais une regex!
Oui ok mais depuis hier soir , je cale :(

Voilà, je voudrais que dans une "$variableA"(textarea comprenant commentaire + email) , je puisse extraire uniquement l'email...alors pour tenter de voir si j'étais dans le vrai

J'ai d'abord, ma variable "$Email" sous forme de regex comme ceci:
$Email = "#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#";

Ensuite, j'utilise quoi? un "preg_match" genre:
if (preg_match($Email, $variableA))
{
echo "Dans la chaine, il y a un email";
}
else
{
echo"Pas d'email dans la chaine";
}

j'ai vu le "preg_match_all" mais voit pas comment m'en servir?

Merci de votre aide


KOogar
WRInaute accro
WRInaute accro
 
Messages: 3884
Inscription: 16 Nov 2004

Message le Sam Mar 10, 2007 15:38

preg_match retourne un tableau et faux en cas d'erreur. Il n'existe pas de fonction qui fasse ce que tu veux en 1 fois. En fait il faut d'abord ressortir les mots de ton texte et les passer dans un tableau. Boucler sur le tableau et à l'aide d'un REGEX, tu pourras voir si l'un des elements du tableau contient bien une adresse mail.

Code: Tout sélectionner
<?php

$Email = "/^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}/";
$texte = 'J\'ecris a cette adresse : mail@ndd.fr car c\est la mienne';
$regs = preg_split("/[\s,:]+/", $texte);

$i=0;
$nb = sizeof($regs);
foreach($regs as $key) {

     if ($i < $nb) {

      preg_match($Email, $key, $matches, PREG_OFFSET_CAPTURE);
      if (!empty($matches[0]))
         echo 'Trouvé : '.$key.'';
          $i++;
     }
         else
          break;

}

// Affiche : Trouvé : mail@ndd.fr

?>


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 2 invités