Clone this repo:
  1. 1955dc2 build: Updating mediawiki/mediawiki-phan-config to 0.14.0 by libraryupgrader · 5 weeks ago master
  2. 47609ae Bump version after release by C. Scott Ananian · 5 weeks ago
  3. e39f23c Release 4.1.0 by C. Scott Ananian · 5 weeks ago 4.1.0
  4. 1687876 Use InvalidArgumentException/LogicException instead of Exception by Umherirrender · 2 months ago
  5. 1292fb0 build: Fix line indents by Umherirrender · 6 weeks ago

RemexHtml

RemexHtml is a parser for HTML 5, written in PHP.

RemexHtml aims to be:

  • Modular and flexible.
  • Fast, as opposed to elegant. For example, we sometimes use direct member access instead of going through accessors, and manually inline some performance-sensitive code.
  • Robust, aiming for O(N) worst-case performance.

RemexHtml contains the following modules:

  • A compliant preprocessor and tokenizer. This generates a token event stream.
  • Compliant tree construction, including error recovery. This generates a tree mutation event stream.
  • A fast integrated HTML serializer, compliant with the HTML fragment serialization algorithm.
  • DOMDocument construction.

RemexHtml presently lacks:

  • Encoding support. The input is expected to be valid UTF-8.
  • Scripting.
  • Precise compliance with specified parse error generation.

RemexHtml aims to be compliant with W3C recommendation HTML 5.1, except for minor backported bugfixes. We chose to implement the W3C standard rather than the latest WHATWG draft because our application needs stability more than feature completeness.

RemexHtml passes all html5lib tests, except for parse error counts and tests which reference a future version of the standard.

WARNING This is a new project, we are still developing use cases. So the API is subject to change.

For example code, see bin/test.php.