Avatar billede mrfunder Nybegynder
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 :)
Avatar billede jakobdo Ekspert
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.
Avatar billede mrfunder Nybegynder
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?
Avatar billede mrfunder Nybegynder
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?
Avatar billede jakobdo Ekspert
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];
  }
}
Avatar billede mrfunder Nybegynder
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?
Avatar billede jakobdo Ekspert
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 ?
Avatar billede mrfunder Nybegynder
15. januar 2009 - 21:54 #7
Der var fejlen ja :)

Tusind tak, virker perfekt.. smid et svar
Avatar billede jakobdo Ekspert
15. januar 2009 - 22:04 #8
Svar!
Avatar billede jakobdo Ekspert
19. april 2009 - 20:59 #9
Takker for point.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester