src/PHPHtmlParser/Dom.php
protected function parse(): void
    {
        // add the root node
        $this->root = new HtmlNode('root');
        $activeNode = $this->root;
        while ( ! is_null($activeNode)) {
            $str = $this->content->copyUntil('<');
            if ($str == '') {
                $info = $this->parseTag();
                if ( ! $info['status']) {
                    // we are done here
                    $activeNode = null;
                    continue;
                }

                // check if it was a closing tag
                if ($info['closing']) {
                    $foundOpeningTag  = true;
                    $originalNode     = $activeNode;
                    while ($activeNode->getTag()->name() != $info['tag']) {
                        $activeNode = $activeNode->getParent();
                        if (is_null($activeNode)) {
                            // we could not find opening tag
                            $activeNode = $originalNode;
                            $foundOpeningTag = false;
                            break;
                        }
                    }
                    if ($foundOpeningTag) {
                        $activeNode = $activeNode->getParent();
                    }
                    continue;
                }

                if ( ! isset($info['node'])) {
                    continue;
                }

                /** @var AbstractNode $node */
                $node = $info['node'];
                $activeNode->addChild($node);

                // check if node is self closing
                if ( ! $node->getTag()->isSelfClosing()) {
                    $activeNode = $node;
                }
            } else if ($this->options->whitespaceTextNode ||
                trim($str) != ''
            ) {
                // we found text we care about
                $textNode = new TextNode($str, $this->options->removeDoubleSpace);
                $activeNode->addChild($textNode);
            }
        }
    }
protected function parse(): void
    {
        // add the root node
        $this->root = new HtmlNode('root');
        $activeNode = $this->root;
        while ( ! is_null($activeNode)) {
            $str = $this->content->copyUntil('<');
            if ($str == '') {
                $info = $this->parseTag();
                if ( ! $info['status']) {
                    // we are done here
                    $activeNode = null;
                    continue;
                }

                // check if it was a closing tag
                if ($info['closing']) {
                    $foundOpeningTag  = true;
                    $originalNode     = $activeNode;
                    while ($activeNode->getTag()->name() != $info['tag']) {
                        $activeNode = $activeNode->getParent();
                        if (is_null($activeNode)) {
                            // we could not find opening tag
                            $activeNode = $originalNode;
                            $foundOpeningTag = false;
                            break;
                        }
                    }
                    if ($foundOpeningTag) {
                        $activeNode = $activeNode->getParent();
                    }
                    continue;
                }

                if ( ! isset($info['node'])) {
                    continue;
                }

                /** @var AbstractNode $node */
                $node = $info['node'];
                $activeNode->addChild($node);

                // check if node is self closing
                if ( ! $node->getTag()->isSelfClosing()) {
                    $activeNode = $node;
                }
            } else if ($this->options->whitespaceTextNode ||
                trim($str) != ''
            ) {
                // we found text we care about
                $textNode = new TextNode($str, $this->options->removeDoubleSpace);
                $activeNode->addChild($textNode);
            }
        }
    }
protected function parse ( ) : void { // add the root node $ this -> root = new HtmlNode ( 'root' ) ; $ activeNode = $ this -> root ; while ( ! is_null ( $ activeNode ) ) { $ str = $ this -> content -> copyUntil ( '<' ) ; if ( $ str == '' ) { $ info = $ this -> parseTag ( ) ; if ( ! $ info [ 'status' ] ) { // we are done here $ activeNode = null ; continue ; } // check if it was a closing tag if ( $ info [ 'closing' ] ) { $ foundOpeningTag = true ; $ originalNode = $ activeNode ; while ( $ activeNode -> getTag ( ) -> name ( ) != $ info [ 'tag' ] ) { $ activeNode = $ activeNode -> getParent ( ) ; if ( is_null ( $ activeNode ) ) { // we could not find opening tag $ activeNode = $ originalNode ; $ foundOpeningTag = false ; break ; } } if ( $ foundOpeningTag ) { $ activeNode = $ activeNode -> getParent ( ) ; } continue ; } if ( ! isset ( $ info [ 'node' ] ) ) { continue ; } /** @var AbstractNode $node */ $ node = $ info [ 'node' ] ; $ activeNode -> addChild ( $ node ) ; // check if node is self closing if ( ! $ node -> getTag ( ) -> isSelfClosing ( ) ) { $ activeNode = $ node ; } } else if ( $ this -> options -> whitespaceTextNode || trim ( $ str ) != '' ) { // we found text we care about $ textNode = new TextNode ( $ str , $ this -> options -> removeDoubleSpace ) ; $ activeNode -> addChild ( $ textNode ) ; } } }
Attempts to parse the html in content.
Attempts to parse the html in content .