Abstract Syntax Tree

This library uses a doubly-linked list Abstract Syntax Tree (AST) to represent the parsed block and inline elements. All such element extend from the Node class.


The following methods can be used to traverse the AST:

Iteration / Walking the Tree

If you’d like to iterate through all the nodes, use the walker() method to obtain an instance of NodeWalker. This will walk through the entire tree, emitting NodeWalkerEvents along the way.


$walker = $document->walker();
while ($event = $walker->next()) {
    echo 'I am ' . ($event->isEntering() ? 'entering' : 'leaving') . ' a ' . get_class($event->getNode()) . ' node' . "\n";

This walker doesn’t use recursion, so you won’t blow the stack when working with deeply-nested nodes.


The following methods can be used to modify the AST:

Document Processor

The best way to manipulate the AST is by implementing a custom Document Processor.