diff --git a/src/HTML5/Parser/Tokenizer.php b/src/HTML5/Parser/Tokenizer.php index feb9a66..c196d1a 100644 --- a/src/HTML5/Parser/Tokenizer.php +++ b/src/HTML5/Parser/Tokenizer.php @@ -507,7 +507,7 @@ protected function attribute(&$attributes) $this->scanner->whitespace(); $val = $this->attributeValue(); - if ($isValidAttribute) { + if ($isValidAttribute && !array_key_exists($name, $attributes)) { $attributes[$name] = $val; } diff --git a/test/HTML5/Parser/TokenizerTest.php b/test/HTML5/Parser/TokenizerTest.php index 374896f..86401c7 100644 --- a/test/HTML5/Parser/TokenizerTest.php +++ b/test/HTML5/Parser/TokenizerTest.php @@ -705,6 +705,14 @@ public function testTagAttributes() ), false, ), + // duplicate attributes must be ignored + '' => array( + 'foo', + array( + 'bar' => 'first', + ), + false, + ), ); $this->isAllGood('startTag', 2, $good);