Skip to content

This HTML fragment produces an endless loop in public function parse_recursive #247

Open
@osthafen

Description

@osthafen

Calling parse with this HTML fragment (from the wild) produces an endless loop in public function parse_recursive:


require_once 'Parser.php';

// produces an endless loop in public function parse_recursive
$mf = Mf2\parse('<!DOCTYPE html>
<html lang="pt-PT">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>PAPER PRIME &#8211; A origem do seu papel</title>
    </head>

    <body>
        <div class="site" id="page-top">
            <!-- dynamic header start -->
            <div data-colibri-id="111-h1" class="page-header style-1 style-local-111-h1 position-relative">
                <!---->
                <div data-colibri-navigation-overlap="true" role="banner" class="h-navigation_outer h-navigation_overlap style-2-outer style-local-111-h2-outer">
                    <!---->
                    <div id="navigation" data-colibri-component="navigation" data-colibri-id="111-h2" class="h-section h-navigation h-navigation d-flex style-2 style-local-111-h2">
                        <!---->
                        <div class="h-section-grid-container h-section-fluid-container">
                            <div data-nav-normal="">
                                <div data-colibri-id="111-h3" class="h-row-container h-section-boxed-container gutters-row-lg-0 gutters-row-md-0 gutters-row-2 gutters-row-v-lg-0 gutters-row-v-md-0 gutters-row-v-2 style-3 style-local-111-h3 position-relative">
                                    <!---->
                                    <div class="h-row justify-content-lg-center justify-content-md-center justify-content-center align-items-lg-stretch align-items-md-stretch align-items-stretch gutters-col-lg-0 gutters-col-md-0 gutters-col-2 gutters-col-v-lg-0 gutters-col-v-md-0 gutters-col-v-2">
                                        <div class="h-column h-column-container d-flex h-col-none style-8-outer style-local-111-h10-outer">
                                            <div data-colibri-id="111-h10" data-placeholder-provider="navigation-menu" class="d-flex h-flex-basis h-column__inner h-px-lg-0 h-px-md-0 h-px-0 v-inner-lg-0 v-inner-md-0 v-inner-0 style-8 style-local-111-h10 position-relative">
                                                <!---->
                                                <div class="w-100 h-y-container h-column__content h-column__v-align flex-basis-auto align-self-lg-center align-self-md-center align-self-center">
                                                    <!---->
                                                    <div data-colibri-component="dropdown-menu" role="navigation" h-use-smooth-scroll-all="true" data-colibri-id="111-h11" class="h-menu h-global-transition-all h-ignore-global-body-typography has-offcanvas-tablet h-menu-horizontal h-dropdown-menu style-9 style-local-111-h11 position-relative h-element">
                                                        <div data-colibri-id="111-h12" class="h-mobile-menu h-global-transition-disable style-10 style-local-111-h12 position-relative h-element">
                                                            <!---->
                                                            <div id="offcanvas-wrapper-111-h12" class="h-offcanvas-panel offcanvas offcanvas-right hide force-hide style-10-offscreen style-local-111-h12-offscreen">
                                                                <div data-colibri-id="111-h13" class="d-flex flex-column h-offscreen-panel style-11 style-local-111-h13 position-relative h-element">
                                                                    <!---->
                                                                    <div class="offscreen-header h-ui-empty-state-container">
                                                                        <div data-colibri-id="111-h15" class="h-row-container gutters-row-lg-0 gutters-row-md-0 gutters-row-0 gutters-row-v-lg-0 gutters-row-v-md-0 gutters-row-v-0 style-12 style-local-111-h15 position-relative">
                                                                            <!---->
                                                                            <div class="h-row justify-content-lg-center justify-content-md-center justify-content-center align-items-lg-stretch align-items-md-stretch align-items-stretch gutters-col-lg-0 gutters-col-md-0 gutters-col-0 gutters-col-v-lg-0 gutters-col-v-md-0 gutters-col-v-0">
                                                                                <!---->
                                                                                <div class="h-column h-column-container d-flex h-col-none style-13-outer style-local-111-h16-outer">
                                                                                    <div data-colibri-id="111-h16" class="d-flex h-flex-basis h-column__inner h-px-lg-2 h-px-md-2 h-px-2 v-inner-lg-2 v-inner-md-2 v-inner-2 style-13 style-local-111-h16 position-relative">
                                                                                    </div>
                                                                                </div>
                                                                            </div>
                                                                        </div>
                                                                    </div>
                                                                </div>
                                                            </div>
                                                        </div>
                                                    </div>
                                                </div>
                                            </div>
                                        </div>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
            <!-- dynamic header end -->
        </div><!-- #page -->
    </body>
</html>', 'https://www.paperprime.pt/');

var_export($mf);

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions