function valid_email($email) { $len = strlen($email); if($len == 0) return(false); $a = 0; $b = 0; do { switch($b) { case 0: if($email[$a] == '@') { if($email[$a + 1] == '[') { $stage = 5; ++$a; } else { $at = $a; ++$b; } } else { if(!($email[$a] == '&' || $email[$a] == '\'' || $email[$a] == '*' || $email[$a] == '+' || $email[$a] == '-' || $email[$a] == '.' || $email[$a] == '/' || (ord($email[$a]) >= 48 && ord($email[$a]) <= 57) || $email[$a] == '=' || $email[$a] == '?' || (ord($email[$a]) >= 65 && ord($email[$a]) <= 90) || $email[$a] == '^' || $email[$a] == '_' || (ord($email[$a]) >= 97 && ord($email[$a]) <= 122) || $email[$a] == '{' || $email[$a] == '~')) return(false); } break; case 1: if($email[$a] == '.' && $at + 1 == $a) return(false); else if($email[$a] == '.') ++$b; else { if(!($email[$a] == '&' || $email[$a] == '\'' || $email[$a] == '*' || $email[$a] == '+' || $email[$a] == '-' || $email[$a] == '.' || $email[$a] == '/' || (ord($email[$a]) >= 48 && ord($email[$a]) <= 57) || $email[$a] == '=' || $email[$a] == '?' || (ord($email[$a]) >= 65 && ord($email[$a]) <= 90) || $email[$a] == '^' || $email[$a] == '_' || (ord($email[$a]) >= 97 && ord($email[$a]) <= 122) || $email[$a] == '{' || $email[$a] == '~')) return(false); } break; case 2: if(!($email[$a] == '&' || $email[$a] == '\'' || $email[$a] == '*' || $email[$a] == '+' || $email[$a] == '-' || $email[$a] == '.' || $email[$a] == '/' || (ord($email[$a]) >= 48 && ord($email[$a]) <= 57) || $email[$a] == '=' || $email[$a] == '?' || (ord($email[$a]) >= 65 && ord($email[$a]) <= 90) || $email[$a] == '^' || $email[$a] == '_' || (ord($email[$a]) >= 97 && ord($email[$a]) <= 122) || $email[$a] == '{' || $email[$a] == '~')) return(false); break; case 5: //ip domain if(!((ord($email[$a]) >= 48 && ord($email[$a]) <= 57) || $email[$a] == '.' || ($a == $len - 1 && $email[$a] == ']'))) return(false); if($a == $len - 1 && $email[$a] == ']') return(true); break; } } while(++$a < $len); return($email[$len - 1] == '.' || $b < 2 ? false:true); }