summaryrefslogtreecommitdiff
path: root/src/HTML5/Parser
diff options
context:
space:
mode:
authorMišo Belica <[email protected]>2014-04-14 16:46:42 +0200
committerMišo Belica <[email protected]>2014-04-16 08:42:11 +0200
commit4401688e65b1d979705fe4e82dfdb283813f0696 (patch)
treedaf0eb5b5c10f7a3121f22a4eb89e21274555535 /src/HTML5/Parser
parent1f2861b528ddf2e4d7306979d3620910f45bac74 (diff)
Don't throw an exception for invalid tag names
Diffstat (limited to 'src/HTML5/Parser')
-rw-r--r--src/HTML5/Parser/DOMTreeBuilder.php8
-rw-r--r--src/HTML5/Parser/Tokenizer.php4
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;