diff options
author | Mišo Belica <[email protected]> | 2014-04-14 16:46:42 +0200 |
---|---|---|
committer | Mišo Belica <[email protected]> | 2014-04-16 08:42:11 +0200 |
commit | 4401688e65b1d979705fe4e82dfdb283813f0696 (patch) | |
tree | daf0eb5b5c10f7a3121f22a4eb89e21274555535 /src/HTML5/Parser | |
parent | 1f2861b528ddf2e4d7306979d3620910f45bac74 (diff) |
Don't throw an exception for invalid tag names
Diffstat (limited to 'src/HTML5/Parser')
-rw-r--r-- | src/HTML5/Parser/DOMTreeBuilder.php | 8 | ||||
-rw-r--r-- | src/HTML5/Parser/Tokenizer.php | 4 |
2 files changed, 10 insertions, 2 deletions
diff --git a/src/HTML5/Parser/DOMTreeBuilder.php b/src/HTML5/Parser/DOMTreeBuilder.php index b79c298..964d662 100644 --- a/src/HTML5/Parser/DOMTreeBuilder.php +++ b/src/HTML5/Parser/DOMTreeBuilder.php @@ -223,8 +223,14 @@ class DOMTreeBuilder implements EventHandler { $lname = Elements::normalizeSvgElement($lname); } + try { + $ele = $this->doc->createElement($lname); + } + catch(\DOMException $e) { + $this->parseError("Illegal tag name: <$lname>. Replaced with <invalid>."); + $ele = $this->doc->createElement('invalid'); + } - $ele = $this->doc->createElement($lname); foreach ($attributes as $aName => $aVal) { if ($this->insertMode == static::IM_IN_SVG) { diff --git a/src/HTML5/Parser/Tokenizer.php b/src/HTML5/Parser/Tokenizer.php index f21d30b..a78cf23 100644 --- a/src/HTML5/Parser/Tokenizer.php +++ b/src/HTML5/Parser/Tokenizer.php @@ -322,7 +322,9 @@ class Tokenizer { } // We know this is at least one char. - $name = strtolower($this->scanner->charsUntil("/> \n\f\t")); + $name = strtolower($this->scanner->charsWhile( + ":0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" + )); $attributes = array(); $selfClose = FALSE; |