Skip to content

Commit

Permalink
fix: use mb_encode_numericentity for #424 (#439)
Browse files Browse the repository at this point in the history
* fix: use mb_encode_numericentity for #424

* test: add copyright-trademark test to Element

* fix: use mb_encode_numericentity for #424

* test: add copyright-trademark test to Element
  • Loading branch information
g105b authored Jul 20, 2023
1 parent 5e759d5 commit 4679248
Show file tree
Hide file tree
Showing 4 changed files with 34 additions and 4 deletions.
2 changes: 1 addition & 1 deletion phpmd.xml
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@

<rule ref="rulesets/naming.xml/ShortVariable">
<properties>
<property name="exceptions" value="ch,mh,sh,id,tr,td,i" />
<property name="exceptions" value="ch,mh,sh,id,tr,td,i,h1,h2,h3,h4,h5,h6" />
</properties>
</rule>
</ruleset>
11 changes: 8 additions & 3 deletions src/Element.php
Original file line number Diff line number Diff line change
Expand Up @@ -162,10 +162,15 @@ protected function __prop_set_innerHTML(string $innerHTML):void {
$child->parentNode->removeChild($child);
}

$innerHTML = mb_convert_encoding(
if($innerHTML === "") {
return;
}

$conversionMap = [0x80, 0x10FFFF, 0, 0x1FFFFF];
$innerHTML = mb_encode_numericentity(
$innerHTML,
"HTML-ENTITIES",
"utf-8"
$conversionMap,
"UTF-8"
);

$tempDocument = new HTMLDocument();
Expand Down
11 changes: 11 additions & 0 deletions test/phpunit/ElementTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -639,4 +639,15 @@ public function testRemoveAttributeNS():void {
self::assertFalse(
$sut->hasAttributeNS($ns, "foo"));
}

public function testConstruct_copyrightTrademark():void {
$copyright = "©";
$trademark = "";
$text = "Copyright $copyright PHP.Gt, DOM$trademark";
$sut = new HTMLDocument("<!doctype html><h1>PHP.Gt/Dom Unit Test</h1>");
$h1 = $sut->querySelector("h1");
$h1->innerHTML = $text;
self::assertStringContainsString($copyright, $h1->innerHTML);
self::assertStringContainsString($trademark, $h1->innerHTML);
}
}
14 changes: 14 additions & 0 deletions test/phpunit/HTMLDocumentTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -781,4 +781,18 @@ public function testEscapedCharacters_entireDom():void {
self::assertStringNotContainsString($needle, $domString);
}
}

public function testConstruct_copyrightTrademark():void {
$copyright = "©";
$trademark = "";
$text = "Copyright $copyright PHP.Gt, DOM$trademark";
$sut = new HTMLDocument("<!doctype html><h1>$text</h1>");
$h1 = $sut->querySelector("h1");
self::assertStringContainsString($copyright, $h1->innerHTML);
self::assertStringContainsString($trademark, $h1->innerHTML);

$sut->documentElement->innerHTML = $text;
self::assertStringContainsString($copyright, $sut->documentElement->innerHTML);
self::assertStringContainsString($trademark, $sut->documentElement->innerHTML);
}
}

0 comments on commit 4679248

Please sign in to comment.