14. januar 2009 - 14:19
Der er
8 kommentarer og 1 løsning
Email adresser i textarea
Hej Eksperter. Jeg benytter et textarea til input at e-mail-adresser som en given bruger ønske at sende en mails til. E-mail-adresser er adskilt af komma. Er der nogen der kan hjælpe mig med et script, som tilføjer hver valid e-mail til et array ved post? :) På forhånd mange tak :)
Annonceindlæg fra HP
14. januar 2009 - 14:22
#1
Du kan jo starte med at splitte emails med split() eller explode() Så får du alle elementerne (som tidligere var adskilt af komma) i et array. Løb så alle emails igennem og lav et tjek. F.eks. har den gode gamle razor.dk lavet noget email tjek, som du måske kan finde et sted og ellers er der mange andre som har lavet noget tilsvarende.
15. januar 2009 - 18:27
#2
Hej Jakobdo. Tak for svaret.. Jeg har fremstykket mig selv frem til dette: <?php $input = trim(strtolower("test1@test.dk, test1@test.com, david@hansen.dk, 13#2£a@asd.aa#")); $email_adresses = explode(",", $input); foreach ($email_adresses as $v) { if (preg_match("/^[0-9a-z]+(([\.\-_])[0-9a-z]+)*@[0-9a-z]+(([\.\-])[0-9a-z-]+)*\.[a-z]{2,}$/i", $v)) { echo $v. " is valid.<br />"; } else { echo $v. " NOT VALID.<br />"; } } echo "<pre>"; print_r($email_adresses); echo "</pre>"; ?> Og output er flg.: test1@test.dk is valid. test1@test.com NOT VALID. david@hansen.dk NOT VALID. 13#2£a@asd.aa# NOT VALID. Array ( [0] => test1@test.dk [1] => test1@test.com [2] => david@hansen.dk [3] => 13#2£a@asd.aa# ) Dette kan jeg dog ikke få til at passe, at det kun er den første som er valid?? Efter min hele skulle alle undtagen e-mail fire vise valid, men det er kun den første der får ok? any ideas?
15. januar 2009 - 18:27
#3
og sidste spørgsmål: hvis en e-mail nu ikke er valid, hvordan fjerner jeg den fra array?
15. januar 2009 - 19:09
#4
Du kan bruge unset() foreach ($email_adresses as $id => $v) { if (preg_match("/^[0-9a-z]+(([\.\-_])[0-9a-z]+)*@[0-9a-z]+(([\.\-])[0-9a-z-]+)*\.[a-z]{2,}$/i", $v)) { echo $v. " is valid.<br />"; } else { echo $v. " NOT VALID.<br />"; unset($email_adresses[$id]; } }
15. januar 2009 - 19:45
#5
$input = trim(strtolower("test1@test.dk, test1@test.com, anders@hansen.dk, 13#2£a@asd.aa#")); $email_adresses = explode(",", $input); foreach ($email_adresses as $id => $v) { if(preg_match("/^[0-9a-z]+(([\.\-_])[0-9a-z]+)*@[0-9a-z]+(([\.\-])[0-9a-z-]+)*\.[a-z]{2,}$/i", $v)) { echo $v. " is valid.<br />"; } else { echo $v. " NOT VALID.<br />"; unset($email_adresses[$id]); } } Umiddelbart vil den stadig kun validere adresse 1, selvom der skulle være flere der er valide?
15. januar 2009 - 20:13
#6
$input = strtolower("test1@test.dk, test1@test.com, anders@hansen.dk, 13#2£a@asd.aa#"); $email_adresses = explode(",", $input); foreach ($email_adresses as $id => $v) { $email = trim($v); if(preg_match("/^[0-9a-z]+(([\.\-_])[0-9a-z]+)*@[0-9a-z]+(([\.\-])[0-9a-z-]+)*\.[a-z]{2,}$/i", $email)) { echo $email. " is valid.<br />"; } else { echo $email. " NOT VALID.<br />"; unset($email_adresses[$id]); } } Sådan måske ?
15. januar 2009 - 21:54
#7
Der var fejlen ja :) Tusind tak, virker perfekt.. smid et svar
15. januar 2009 - 22:04
#8
Svar!
19. april 2009 - 20:59
#9
Takker for point.
Vi tilbyder markedets bedste kurser inden for webudvikling