यहाँ एक समारोह है कि मैं का उपयोग है। यह थोड़ा और अधिक से अधिक सिर्फ एक regex के माध्यम से ई-मेल पता चलाने करता है, लेकिन अब तक यह सबसे पूर्ण समाधान है कि मैंने पाया है:
function validEmail($email, $skipDNS = false)
{
$isValid = true;
$atIndex = strrpos($email, "@");
if (is_bool($atIndex) && !$atIndex)
{
$isValid = false;
}
else
{
$domain = substr($email, $atIndex+1);
$local = substr($email, 0, $atIndex);
$localLen = strlen($local);
$domainLen = strlen($domain);
if ($localLen < 1 || $localLen > 64)
{
// local part length exceeded
$isValid = false;
}
else if ($domainLen < 1 || $domainLen > 255)
{
// domain part length exceeded
$isValid = false;
}
else if ($local[0] == '.' || $local[$localLen-1] == '.')
{
// local part starts or ends with '.'
$isValid = false;
}
else if (preg_match('/\\.\\./', $local))
{
// local part has two consecutive dots
$isValid = false;
}
else if (!preg_match('/^[A-Za-z0-9\\-\\.]+$/', $domain))
{
// character not valid in domain part
$isValid = false;
}
else if (preg_match('/\\.\\./', $domain))
{
// domain part has two consecutive dots
$isValid = false;
}
else if (!preg_match('/^(\\\\.|[A-Za-z0-9!#%&`_=\\/$\'*+?^{}|~.-])+$/', str_replace("\\\\","",$local)))
{
// character not valid in local part unless
// local part is quoted
if (!preg_match('/^"(\\\\"|[^"])+"$/', str_replace("\\\\","",$local)))
{
$isValid = false;
}
}
if(!$skipDNS)
{
if ($isValid && !(checkdnsrr($domain,"MX") || checkdnsrr($domain,"A")))
{
// domain not found in DNS
$isValid = false;
}
}
}
return $isValid;
}
कार्य है एक वैकल्पिक $ skipDNS तर्क सेट किया जा सकता है कि सही अगर आप एचओएस के लिए एमएक्स रिकॉर्ड मान्य नहीं करना चाहते हैं। अन्यथा फ़ंक्शन यह सत्यापित करने का प्रयास करेगा कि प्रदान किया गया ई-मेल पता वास्तव में वास्तविक ईमेल सर्वर पर मानचित्र करता है।
यह ध्यान रखना उपयोगी है कि अधिकांश RegEx ईमेल सत्यापन तकनीक अधिकांश ई-मेल पते को मान्य कर देगी, लेकिन संभवतः वे कुछ सावधानी से अमान्य पते या सबसे खराब तरीके से तैयार किए जाने की अनुमति देंगे .. कुछ और अस्पष्ट, लेकिन वैध ई-मेल पते पर असफल हो जाते हैं। अधिक जानकारी के लिए आप Internet Message Formats RFC देख सकते हैं जो ई-मेल पते के लिए अनुमत प्रारूप का वर्णन करता है।
स्रोत
2009-06-15 16:36:55
ईमेल रेगेक्स के बारे में बहुत सारे प्रश्न हैं। http://stackoverflow.com/questions/508108/regex-for-email-validation-closed – Macarse