Expression régulières PHP
                    
        
     
             
                    atout1
    
        
    
                    Messages postés
            
                
     
             
            236
        
            
                                    Statut
            Membre
                    
                -
                                     
Reivax962 Messages postés 3742 Statut Membre -
        Reivax962 Messages postés 3742 Statut Membre -
        Bonjour,  tout le monde 
j'ai une chaine de caractère :
$chaine = "bla bla bla mail@hotmail.fr bla totot toto ";
j'ai appliquer l'expression suivnat :
echo $mail = preg_match("#[a-zA-z0-9]+[-_.]?[a-zA-Z0-9.-_]+[@][a-zA-z0-9]+[-_.]?[a-zA-Z0-9]+[-_.]+[a-zA-Z0-9]+#", "$chaine" )
le echo me donne 1 , quelqu'un sait commen t faire pour récupere la valeur de mail (mail@hotmail.com)?? Merci d'avance
            
            
                
            
                
    
    
    
        j'ai une chaine de caractère :
$chaine = "bla bla bla mail@hotmail.fr bla totot toto ";
j'ai appliquer l'expression suivnat :
echo $mail = preg_match("#[a-zA-z0-9]+[-_.]?[a-zA-Z0-9.-_]+[@][a-zA-z0-9]+[-_.]?[a-zA-Z0-9]+[-_.]+[a-zA-Z0-9]+#", "$chaine" )
le echo me donne 1 , quelqu'un sait commen t faire pour récupere la valeur de mail (mail@hotmail.com)?? Merci d'avance
        A voir également:         
- Expression régulières PHP
- Easy php - Télécharger - Divers Web & Internet
- Expression écrite cm1 cm2 télécharger gratuit - Télécharger - Éducatifs
- Microsoft expression encoder - Télécharger - Divers Utilitaires
- Expert php pinterest - Télécharger - Langages
- Php alert ✓ - Forum PHP
6 réponses
                        
                    le 1 signifie que c'est une reponse boolean:     
corrige ton code comme ceci
    
                corrige ton code comme ceci
$isOK = preg_match("/\b[a-z0-9_\-\.]+[@][a-z0-9_\-\.]+\.[a-z]{2,}\b/i", $chaine, $reponse );     
if($isOK > 0)  
print_r($reponse[0]);     
 
                
                
                        
                    preg_match renvoie un entier (corrigé "par" Laorra).   
En fait avec un preg_match tu vérifie une correspondance entre un pattern et une chaine de caractère.
S'il renvoie un c'est qu'il y a une correspondance du pattern dans la chaîne de caractères (c'est surtout utiliser dans les if).
Si tu veux remplacer tu peux utiliser preg_replace.
Il suffit de trouver le bon pattern.
Si tu veux récupérer l'email utilise preg_replace ou ereg.
Tu devrais avoir quelque chose comme:
Plus d'infos sur les pattern:
https://www.commentcamarche.net/contents/803-php-expressions-regulieres
    
                En fait avec un preg_match tu vérifie une correspondance entre un pattern et une chaine de caractère.
S'il renvoie un c'est qu'il y a une correspondance du pattern dans la chaîne de caractères (c'est surtout utiliser dans les if).
Si tu veux remplacer tu peux utiliser preg_replace.
Il suffit de trouver le bon pattern.
Si tu veux récupérer l'email utilise preg_replace ou ereg.
Tu devrais avoir quelque chose comme:
$pattern = '/^[:alnum:]+[@][:alnum:]+$/'; $mail = ereg($pattern,$chaine);
Plus d'infos sur les pattern:
https://www.commentcamarche.net/contents/803-php-expressions-regulieres
    Non, je confirme, preg_match renvoi bien un INT (nombre de fois que le chaîne est trouvée)
https://www.php.net/manual/fr/function.preg-match.php
    https://www.php.net/manual/fr/function.preg-match.php
                        
                    Salut, 
Ici la valeur de mail n'est pas "mail@hotmail.com" mais bien 1,, puisque la fonction preg_match cherche si ta chaine passer en second paramêtre, correspond à l'expression régulière en paramêtre 1. Le 1 signifie que oui, cette expression correspond bien.
Le retour de la fonction preg_match est un INT, donc il t'affiche un INT.
Si tu veux afficher l'adresse email, c'est un :
echo $chaine;
que tu dois faire!
    
                Ici la valeur de mail n'est pas "mail@hotmail.com" mais bien 1,, puisque la fonction preg_match cherche si ta chaine passer en second paramêtre, correspond à l'expression régulière en paramêtre 1. Le 1 signifie que oui, cette expression correspond bien.
Le retour de la fonction preg_match est un INT, donc il t'affiche un INT.
Si tu veux afficher l'adresse email, c'est un :
echo $chaine;
que tu dois faire!
                        
                    Problème résolu , voilà le code final : 
<?php
$chaine = "bla bla bla mail@hotmail.fr bla totot toto ";
preg_match('#[a-zA-z0-9]*[-_.+/\]?[a-zA-Z0-9.-_]+[@][a-zA-z0-9]*[-_.+/\]?[a-zA-Z0-9.-_]+#', $chaine, $matches, PREG_OFFSET_CAPTURE);
$result = array_merge($matches, $matches[0]);
echo $result[1]; // affiche : mail@hotmail.fr
?>
Merci pour vous tous
    
                <?php
$chaine = "bla bla bla mail@hotmail.fr bla totot toto ";
preg_match('#[a-zA-z0-9]*[-_.+/\]?[a-zA-Z0-9.-_]+[@][a-zA-z0-9]*[-_.+/\]?[a-zA-Z0-9.-_]+#', $chaine, $matches, PREG_OFFSET_CAPTURE);
$result = array_merge($matches, $matches[0]);
echo $result[1]; // affiche : mail@hotmail.fr
?>
Merci pour vous tous
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question 
    
    
    
    
C'est bête, mais si un client te demande un design bleu, pourquoi rajouté la possibilité de choisir un design vert?
Le but est de répondre à la demande.
En gros, faut répondre à une question par la ou les réponses, et pas prévoir d'autre cas. Mais c'est vrai que dans le cas ou il y a plusieurs adresses mails, il faut utiliser:
Cependant, s'il n'y en a qu'une, il sera plus efficace et approprié d'utiliser:
Le client n'a pas dit ce que contenait « bla bla », et en toute logique, puisqu'on en est à répondre à un client, il aurait fallu poser la question avant d'essayer de répondre ;)
Donc tu réponds peut-être à la demande, mais peut-être pas :)