summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/HTML5/Serializer/Traverser.php14
-rw-r--r--test/HTML5/Serializer/TraverserTest.php15
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