---
title: "Kontrollera epostadresser"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/38265-kontrollera-epostadresser"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "sgtpepper"
published: "2000-10-24T23:09:00.000Z"
updated: "2005-09-22T15:31:41.000Z"
replies: 9
views: 8098
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/38265-kontrollera-epostadresser"
---

# Kontrollera epostadresser

## #1 — sgtpepper, 2000-10-24T23:09Z

Liten kodsnutt som kollar att en epostadress stämmer på formen xxx@yyy.com och att domännamnet verkligen har en MX-pekare.

```
<font size="1" face="Verdana, Arial, Helvetica, sans-serif">
$email = "hej@hopp.nu";

$okEmail = (isset($email) && strlen($email) > 5 && eregi("^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+([a-z]{2,3}$)",$email,$check));
$okEmail = ($okEmail) && (getmxrr($check[1].$check[2],$temp));

if ($okEmail) 
  print "OK";
else
  print "your head will implode in 5..4..3..2..1 seconds";
</font>
```

Permalänk: https://www.webforum.nu/p/38265

## #2 — Forsberg, 2004-06-20T14:34Z

Jag modifierade sgtpepper's script en aning då jag märkte att Windowsutgåvan av PHP inte verkar ha något stöd för funktionen "".

Här är en funktion som fungerar under Windowsplattformar:

```
<?php

$email = "jag@gillar.glass";

function getmxrr($hostname, &$mxhosts)
{
   $mxhosts = array();
   exec('nslookup -type=mx '.$hostname, $result_arr);
   foreach($result_arr as $line) 
   {
     if (preg_match("/.*mail exchanger = (.*)/", $line, $matches)) 
         $mxhosts[] = $matches[1];
   }
   return( count($mxhosts) > 0 );
}

$okEmail = (isset($email) && strlen($email) > 5 && eregi("^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+([a-z]{2,3}$)",$email,$check));
$okEmail = ($okEmail) && (getmxrr($check[1].$check[2],$temp));

if ($okEmail) {
  print "$email checked as OK! =)";
  exit;
}
else {
  print "$email is NOT a valid e-mail address since the host does not seem to have any MX-record!";
  exit;
}

?>
```

Tjim =)

Permalänk: https://www.webforum.nu/p/1369906

## #3 — K++, 2004-09-23T14:58Z

Observera att scripten ovan inte fungerar för tex john@härnösand.nu.

Permalänk: https://www.webforum.nu/p/1443974

## #4 — Caine, 2005-01-26T10:04Z

Hur gör man om man ska kunna ha 4 eller 5 bokstäver efter punkten?

Permalänk: https://www.webforum.nu/p/1539638

## #5 — HenrikAI, 2005-01-26T11:19Z

> **Caine skrev:**
>
> Hur gör man om man ska kunna ha 4 eller 5 bokstäver efter punkten?

 

Ändra {2,3} i nedanstående rad till {2,4} eller {2,5}.

```php
$okEmail = (isset($email) && strlen($email) > 5 && eregi("^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+([a-z]{2,3}$)",$email,$check));
```

> **K++ skrev:**
>
> Observera att scripten ovan inte fungerar för tex john@härnösand.nu.

 

Borde fungera om man ändrar alla 0-9a-z- till 0-9a-zåäö-.

Permalänk: https://www.webforum.nu/p/1539664

## #6 — Caine, 2005-01-31T11:45Z

> **HenrikAI skrev:**
>
> > **Caine skrev:**
> >
> > Hur gör man om man ska kunna ha 4 eller 5 bokstäver efter punkten?
>
>  
> 
> Ändra {2,3} i nedanstående rad till {2,4} eller {2,5}.
> 
>
>
> ```php
> $okEmail = (isset($email) && strlen($email) > 5 && eregi("^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+([a-z]{2,3}$)",$email,$check));
> ```

Det funkar inte!

Har någon något annat förslag?

Permalänk: https://www.webforum.nu/p/1542110

## #7 — ChristianS, 2005-02-01T18:11Z

> **K++ skrev:**
>
> Observera att scripten ovan inte fungerar för tex john@härnösand.nu.

Huhm, på *vilket* sätt fungerar det inte för john@härnösand.nu? Eller för att förtydliga: Varför fungear inte det exemplet? :)

Permalänk: https://www.webforum.nu/p/1542787

## #8 — mrblonde, 2005-02-01T18:26Z

Onödigt vetande, men på Larry Ostermans blog diskuterades för ett tag sedan epostvalidering med regexp. De kom fram till att det är i stort sett omöjligt att lösa med regexp om man skll validera enligt RFC:n.

<http://blogs.msdn.com/larryosterman/archive/2005/01/07/348548.aspx>
Och här fortsätter diskussionen dagen efter om samma ämne.
<http://blogs.msdn.com/larryosterman/archive/2005/01/10/350135.aspx>

Larry Osterman är alltid intressant!

Permalänk: https://www.webforum.nu/p/1542792

## #9 — jeliasson, 2005-09-20T09:57Z

En riktig email verifierare skulle även verifiera så att TLD är korrekt.
Vad jag vet så är inte TLDn .xxx korrekt.

Permalänk: https://www.webforum.nu/p/1673559

## #10 — Hansen, 2005-09-22T15:31Z

> **jeliasson skrev:**
>
> En riktig email verifierare skulle även verifiera så att TLD är korrekt..

Exemplet ovan verifierar MX pekaren.

> **jeliasson skrev:**
>
> Vad jag vet så är inte TLDn .xxx korrekt.

ICANN har godkänt .xxx, så det är bara en tidsfråga innan det tas i drift.

<http://www.icann.org/announcements/announcement-01jun05.htm>
<http://www.icmregistry.com/ICMPressRelease.html>

ICANN tillhandahåller en lista på giltiga TLD's, <http://data.iana.org/TLD/tlds-alpha-by-domain.txt>

Ett regexp för att validera nuvarande TLD's:

```
(?:a(?:e(?:ro)?|r(?:pa)?|[cdfgilmnoqstuwz])|b(?:iz?|[abdefghjmnorstvwyz])|c(?:o(
?:m|op)?|[acdfghiklmnruvxyz])|d[ejkmoz]|e(?:[cegrst]|d?u)|f[ijkmor]|g(?:[abdefgh
ilmnpqrstuwy]|ov)|h[kmnrtu]|i(?:n(?:fo|t)?|[delmoqrst])|j(?:o(?:bs)?|[emp])|k[eg
himnrwyz]|l[abcikrstuvy]|m(?:u(?:seum)?|[acdghkmnopqrstvwxyz]|i?l)|n(?:a(?:me)?|
et?|[cfgilopruz])|o(?:m|rg)|p(?:ro?|[aefghklmnstwy])|r[eouw]|s[abcdeghijklmnortu
vyz]|t(?:r(?:avel)?|[cdfghjklmnoptvwz])|u[agkmsyz]|v[aceginu]|w[fs]|y[etu]|z[amw
]|qa)
```

Permalänk: https://www.webforum.nu/p/1674344

---

Tråden på webben: https://www.webforum.nu/amne/php/38265-kontrollera-epostadresser
