Masterminds/html5-php

does not fix mismatching tags

John-B opened this issue · 2 comments

DOMDocument::Serialize, which is called by Drupal's Html::normalize before Drupal 10, appears to fix mismatching tags, but HTML5-php does not.

With DOMDocument, Html::normalize() on <h3>Heading</h2> is giving <h3>Heading</h3>.
With HTL5-php, Html::normalize() on <h3>Heading</h2> is giving <h3>Heading</p>.

Arguably not a bug, though it has caused a regression in one use case (https://www.drupal.org/project/toc_api/issues/3416816)

can you please explain better what is the issue here? i'm not sure if I understand it correctly.. do you have a failing test case?

If passed non-matching or open h tags, expected behaviour is to match closing h tag, but this is not working.

I do not see a relevant Masterminds or Drupal test. Quick manual test:

  1. Make directory.
  2. Install Masterminds with composer.
  3. Place Masterminds/html5-php/example.php in the directory.
  4. Check the file runs: php ./example.php
  5. Now break the HTML by changing </h1> to </h2>. Or to </p>. Or by deleting </h1>. Run again.
  6. Expected output in all three cases is <h1>Hello World</h1>. Actual output is faulty HTML.