diff options
-rw-r--r-- | src/HTML5/Parser/Tokenizer.php | 10 | ||||
-rw-r--r-- | test/HTML5/Parser/TokenizerTest.php | 2 |
2 files changed, 7 insertions, 5 deletions
diff --git a/src/HTML5/Parser/Tokenizer.php b/src/HTML5/Parser/Tokenizer.php index 02e78d9..9d8c39b 100644 --- a/src/HTML5/Parser/Tokenizer.php +++ b/src/HTML5/Parser/Tokenizer.php @@ -259,7 +259,7 @@ class Tokenizer { return $this->comment(); } // Doctype - elseif($tok == 'D') { + elseif($tok == 'D' || $tok == 'd') { return $this->doctype(''); } // CDATA section @@ -598,12 +598,12 @@ class Tokenizer { * @todo This method is a little long. Should probably refactor. */ protected function doctype() { - if ($this->scanner->current() != 'D') { + if (strcasecmp($this->scanner->current(), 'D')) { return FALSE; } - // Check that string is DOCTYPE - $chars = $this->scanner->charsWhile("DOCTYPE"); - if ($chars != 'DOCTYPE') { + // Check that string is DOCTYPE. + $chars = $this->scanner->charsWhile("DOCTYPEdoctype"); + if (strcasecmp($chars, 'DOCTYPE')) { $this->parseError('Expected DOCTYPE, got %s', $chars); return $this->bogusComment('<!' . $chars); } diff --git a/test/HTML5/Parser/TokenizerTest.php b/test/HTML5/Parser/TokenizerTest.php index 10f9f9a..0692bc3 100644 --- a/test/HTML5/Parser/TokenizerTest.php +++ b/test/HTML5/Parser/TokenizerTest.php @@ -226,6 +226,8 @@ class TokenizerTest extends \HTML5\Tests\TestCase { public function testDoctype() { $good = array( '<!DOCTYPE html>' => array('html', 0, NULL, FALSE), + '<!doctype html>' => array('html', 0, NULL, FALSE), + '<!DocType html>' => array('html', 0, NULL, FALSE), "<!DOCTYPE\nhtml>" => array('html', 0, NULL, FALSE), "<!DOCTYPE\fhtml>" => array('html', 0, NULL, FALSE), '<!DOCTYPE html PUBLIC "foo bar">' => array('html', EventStack::DOCTYPE_PUBLIC, 'foo bar', FALSE), |