diff options
-rw-r--r-- | src/HTML5/Serializer/Traverser.php | 14 | ||||
-rw-r--r-- | test/HTML5/Serializer/TraverserTest.php | 15 |
2 files changed, 27 insertions, 2 deletions
diff --git a/src/HTML5/Serializer/Traverser.php b/src/HTML5/Serializer/Traverser.php index 644d842..03a1b18 100644 --- a/src/HTML5/Serializer/Traverser.php +++ b/src/HTML5/Serializer/Traverser.php @@ -267,12 +267,22 @@ class Traverser { return $this; } + /** + * Encode text. + * + * Note, PHP 5.4+ has better html5 encoding. + * + * @param string $text + * text to encode. + * + * @return string + * The encoded text. + */ protected function enc($text) { $flags = ENT_QUOTES; - // TODO: Verify on PHP 5.4 that this works as desired. if (defined('ENT_HTML5')) { - $flags = ENT_HTML5|ENT_SUBSTITUTE; + $flags = ENT_HTML5 | ENT_SUBSTITUTE | ENT_QUOTES; } $ret = htmlentities($text, $flags, 'UTF-8'); //if ($ret != $text) printf("Replaced [%s] with [%s]", $text, $ret); diff --git a/test/HTML5/Serializer/TraverserTest.php b/test/HTML5/Serializer/TraverserTest.php index 7522f04..3cf3e32 100644 --- a/test/HTML5/Serializer/TraverserTest.php +++ b/test/HTML5/Serializer/TraverserTest.php @@ -91,4 +91,19 @@ class TraverserTest extends \HTML5\Tests\TestCase { $m->invoke($t, $list->item(0)->childNodes->item(0)); $this->assertEquals('baz();', stream_get_contents($stream, -1, 0)); } + + function testEnc() { + + // @todo: add more tests. + $tests = array( + "& this is a test '" => "& this is a test '", + ); + + list($t, $s) = $this->getTraverser(); + + $m = $this->getProtectedMethod('enc'); + foreach ($tests as $test => $expected) { + $this->assertEquals($expected, $m->invoke($t, $test)); + } + } }
\ No newline at end of file |