Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Traverser::node() does not handle entity references #244

Open
longwave opened this issue Jan 22, 2024 · 2 comments
Open

Traverser::node() does not handle entity references #244

longwave opened this issue Jan 22, 2024 · 2 comments

Comments

@longwave
Copy link

longwave commented Jan 22, 2024

If I manually modify a DOM document and add an entity reference, HTML5::saveHTML() does not give the same result as DOMDocument::saveHTML():

$html5 = new Masterminds\HTML5(['disable_html_ns' => TRUE]);
$dom = $html5->loadHTML('<body>');
$node = $dom->getElementsByTagName('body')->item(0);

$node->appendChild($dom->createElement('span', 'Identit&eacute;'));

print $dom->saveHTML() . "\n";
print $html5->saveHTML($dom) . "\n";

outputs

<!DOCTYPE html>
<html><body><span>Identit&eacute;</span></body></html>

<!DOCTYPE html>
<html><body><span>Identit</span></body></html>

This was reported in the Drupal project, which has recently switched to using this library instead of using DOMDocument to parse and serialize HTML: https://www.drupal.org/project/drupal/issues/3416204

This is because Traverser::node() does not handle XML_ENTITY_REF_NODE. Should the switch statement and rules class be extended to support this case?

@jcnventura
Copy link

Any news on this?

@goetas
Copy link
Member

goetas commented Jul 17, 2024

hm, interesting. are you willing to provide a fix for this?

# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants