summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/HTML5/Parser/Tokenizer.php10
-rw-r--r--test/HTML5/Parser/TokenizerTest.php2
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),