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
- Expert php pinterest - Télécharger - Langages
- Microsoft expression encoder - Télécharger - Divers Utilitaires
- Expression de recherche - Guide
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 :)