diff --git a/EmailValidator/Parser/DomainPart.php b/EmailValidator/Parser/DomainPart.php index d57b1c0..28f450f 100644 --- a/EmailValidator/Parser/DomainPart.php +++ b/EmailValidator/Parser/DomainPart.php @@ -1,6 +1,5 @@ lexer->getPrevious(); - if ($this->lexer->token['type'] === EmailLexer::S_SLASH) { - throw new CharNotAllowed(); - } + $this->checkNotAllowedChars($this->lexer->token); if ($this->lexer->token['type'] === EmailLexer::S_OPENPARENTHESIS) { $this->parseComments(); @@ -173,6 +170,14 @@ class DomainPart extends Parser return $domain; } + + private function checkNotAllowedChars($token) + { + $notAllowed = [EmailLexer::S_BACKSLASH => true, EmailLexer::S_SLASH=> true]; + if (isset($notAllowed[$token['type']])) { + throw new CharNotAllowed(); + } + } protected function parseDomainLiteral() { diff --git a/EmailValidator/Validation/MultipleValidationWithAnd.php b/EmailValidator/Validation/MultipleValidationWithAnd.php index f9920f8..3bcb8bf 100644 --- a/EmailValidator/Validation/MultipleValidationWithAnd.php +++ b/EmailValidator/Validation/MultipleValidationWithAnd.php @@ -25,6 +25,7 @@ class MultipleValidationWithAnd implements EmailValidation $result = true; $errors = []; foreach ($this->validations as $validation) { + $emailLexer->reset(); $result = $result && $validation->isValid($email, $emailLexer); $this->warnings = array_merge($this->warnings, $validation->getWarnings()); $errors[] = $validation->getError(); diff --git a/Tests/EmailValidator/Validation/RFCValidationTest.php b/Tests/EmailValidator/Validation/RFCValidationTest.php index 999d19a..c1bfb4b 100644 --- a/Tests/EmailValidator/Validation/RFCValidationTest.php +++ b/Tests/EmailValidator/Validation/RFCValidationTest.php @@ -127,6 +127,7 @@ class RFCValidationTest extends \PHPUnit_Framework_TestCase ['.example@localhost'], ['ex\ample@localhost'], ['example@local\host'], + ['example@localhost\\'], ['example@localhost.'], ['user name@example.com'], ['username@ example . com'],