All pastes #749813 Raw Edit

_Lemon_

public text v1 · immutable
#749813 ·published 2007-10-25 23:00 UTC
rendered paste body

 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);
 }