Question

    Hello friends,

    I have a problem regarding email validation.

    Here is my code:-
    <?php
    $email='abc@test.co.in.co.in.co.in.co.in.co.in.co.in.co.in.co.in.co.in.co.in.co.in.co.in.co.in.co.in.co.in.co.in.co.in.co.in.co.in.ab.cd.ef.gh.ij.kl';

    $normal = "^[a-z0-9_\+-]+(\.[a-z0-9_\+-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*\.([a-z]{2,4})$"; 
    $validButRare = "^[a-z0-9,!#\$%&'\*\+/=\?\^_`\{\|}~-]+(\.[a-z0-9,!#\$%&'\*\+/=\?\^_`\{\|}~-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*\.([a-z]{2,})$"; 

    if (eregi($normal, $email)) {
      echo("The address $email is valid and looks normal.");
    }

    else if (eregi($validButRare, $email)) {
      echo("The address $email looks a bit strange but it is syntactically valid. You might want to check it for typos.");
    }

    else {
      echo("The address $email is not valid.");
    }           
    ?>

    problem is this that it is showing above mail id as valid email id.
    and the output is:
    "The address abc@test.co.in.co.in.co.in.co.in.co.in.co.in.co.in.co.in.co.in.co.in.co.in.co.in.co.in.co.in.co.in.co.in.co.in.co.in.co.in.ab.cd.ef.gh.ij.kl is valid and looks normal."
Was it helpful?

Solution 2

The better way to check existence of the domain name.
If domain name exist then email is valid otherwise email is invalid.

<?php
if(domain_exists('test@hotc.nu.in')) {
    echo('This email can be accepted as valid.');
}
else {
    echo('Domain name doesnot exists;  Invalid email.');
}

function domain_exists($email, $record = 'MX'){
    list($user, $domain) = explode('@', $email);
    return checkdnsrr($domain, $record);
}
?>

OTHER TIPS

Try this:

$email = 'abc@test.co.in.co.in.co.in.co.in.co.in.co.in.co.in.co.in.co.in.co.in.co.in.co.in.co.in.co.in.co.in.co.in.co.in.co.in.co.in.ab.cd.ef.gh.ij.kl';
var_dump(filter_var($email, FILTER_VALIDATE_EMAIL) !== false);
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top