3v4l.org

run code in 300+ PHP versions simultaneously
<?php $html = <<<'HTML' <p>Lorem ipsum dolor sit amet...</p> <p>consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat</p> <img src="/path/to/image.jpg" /> <h2 class="style" id="name">first headline 2</h2> <p>Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat</p> <p>Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat</p> <h3 class="style" id="name1">Headline 3</h3> <p>vel illum dolore eu feugiat nulla facilisis at vero et accumsan et iusto odio dignissim qui</p> <h3 class="style" id="name2">On more Headline 3</h3> <p>blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi</p> <h2 id="name3" class="style">Headline 2 with class</h2> <p>Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet</p> <H2 id="name4">Another Headline 2 without class</h2> <p>doming id quod mazim placerat facer possim assum</p> HTML; libxml_use_internal_errors(true); $dom = new DOMDocument; $dom->loadHTML($html); $xp = new DOMXPath($dom); $query = '//*[contains("h1 h2 h3 h4 h5 h6", name())]'; $nodes = $xp->query($query); $currentLevel = ['level' => 0, 'count' => 0]; $stack = []; $format = '<li><a href="#%s">%s</a></li>'; $result = ''; foreach($nodes as $node) { $level = (int)$node->tagName[1]; // extract the digit after h while($level < $currentLevel['level']) { $currentLevel = array_pop($stack); $result .= '</ul>'; } if ($level === $currentLevel['level']) { $currentLevel['count']++; } else { $stack[] = $currentLevel; $currentLevel = ['level' => $level, 'count' => 1]; $result .= '<ul>'; } $result .= sprintf($format, $node->getAttribute('id'), $node->nodeValue); } $result .= str_repeat('</ul>', count($stack)); echo $result;

Here you find the average performance (time & memory) of each version. A grayed out version indicates it didn't complete successfully (based on exit-code).

VersionSystem time (s)User time (s)Memory (MiB)
8.5.20.0100.00920.56
8.5.10.0120.00519.05
8.5.00.0130.00820.59
8.4.170.0150.00820.19
8.4.160.0130.01023.57
8.4.150.0020.00014.05
8.4.140.0120.01218.19
8.4.130.0090.01118.17
8.4.120.0100.01022.61
8.4.110.0070.00321.08
8.4.100.0100.00719.10
8.4.90.0160.00521.21
8.4.80.0130.00319.26
8.4.70.0160.00619.15
8.4.60.0120.00919.27
8.4.50.0110.00919.32
8.4.40.0090.01218.25
8.4.30.0160.00320.79
8.4.20.0000.01118.08
8.4.10.0130.00319.70
8.3.300.0100.01021.23
8.3.290.0140.00821.23
8.3.280.0110.00918.79
8.3.270.0100.00917.00
8.3.260.0120.00717.01
8.3.250.0130.00619.30
8.3.240.0100.00716.82
8.3.230.0100.00617.11
8.3.220.0120.00719.32
8.3.210.0100.00917.11
8.3.200.0050.00517.12
8.3.190.0130.00717.05
8.3.180.0120.00719.13
8.3.170.0040.01417.75
8.3.160.0110.00817.04
8.3.150.0030.00617.08
8.3.140.0070.01119.24
8.3.130.0030.00518.64
8.3.120.0030.00620.85
8.3.110.0030.00720.94
8.3.100.0060.00317.15
8.3.90.0070.01326.77
8.3.80.0110.00018.81
8.3.70.0090.00916.88
8.3.60.0120.00916.96
8.3.50.0180.00020.73
8.3.40.0120.00419.09
8.3.30.0170.00319.17
8.3.20.0000.00824.18
8.3.10.0050.00324.66
8.3.00.0040.00426.16
8.2.300.0100.01022.49
8.2.290.0040.00420.66
8.2.280.0100.01118.67
8.2.270.0130.00617.32
8.2.260.0110.00016.96
8.2.250.0000.00816.96
8.2.240.0030.00517.68
8.2.230.0100.00022.58
8.2.220.0050.00524.06
8.2.210.0120.00326.77
8.2.200.0060.00318.66
8.2.190.0110.00718.66
8.2.180.0120.00925.92
8.2.170.0120.00319.29
8.2.160.0140.01122.96
8.2.150.0090.00025.66
8.2.140.0030.00524.66
8.2.130.0090.00026.16
8.2.120.0000.00826.16
8.2.110.0060.00320.72
8.2.100.0080.00418.41
8.2.90.0050.00618.60
8.2.80.0030.00619.11
8.2.70.0030.00517.88
8.2.60.0060.00318.00
8.2.50.0040.00417.88
8.2.40.0030.00617.88
8.2.30.0000.00818.13
8.2.20.0000.00720.80
8.2.10.0040.00418.04
8.2.00.0070.00019.69
8.1.340.0140.00722.14
8.1.330.0140.00622.33
8.1.320.0150.00618.01
8.1.310.0060.00318.87
8.1.300.0030.00618.84
8.1.290.0110.00030.84
8.1.280.0070.00725.92
8.1.270.0030.00624.27
8.1.260.0040.00426.35
8.1.250.0040.00428.09
8.1.240.0040.00421.40
8.1.230.0090.00617.95
8.1.220.0040.00418.16
8.1.210.0040.00418.77
8.1.200.0030.00517.73
8.1.190.0000.00817.48
8.1.180.0030.00619.38
8.1.170.0030.00618.88
8.1.160.0000.00719.21
8.1.150.0000.00719.05
8.1.140.0060.00317.82
8.1.130.0050.00617.86
8.1.120.0020.01117.92
8.1.110.0100.00217.86
8.1.100.0080.00417.79
8.1.90.0090.00517.82
8.1.80.0080.00717.80
8.1.70.0080.00817.79
8.1.60.0110.00517.91
8.1.50.0060.00917.87
8.1.40.0110.00317.88
8.1.30.0110.00618.00
8.1.20.0140.00417.94
8.1.10.0140.00717.90
8.1.00.0110.00917.86
8.0.300.0040.00418.77
8.0.290.0030.00917.13
8.0.280.0050.00218.84
8.0.270.0030.00618.39
8.0.260.0090.00217.32
8.0.250.0070.00517.34
8.0.240.0070.00417.32
8.0.230.0110.00117.39
8.0.220.0040.00617.31
8.0.210.0090.00617.28
8.0.200.0080.00717.40
8.0.190.0120.00517.35
8.0.180.0120.00417.30
8.0.170.0140.00117.31
8.0.160.0120.00517.29
8.0.150.0120.00717.26
8.0.140.0150.00517.24
8.0.130.0090.00517.33
8.0.120.0130.00517.31
8.0.110.0140.00417.31
8.0.100.0170.00217.29
8.0.90.0120.00617.28
8.0.80.0150.00517.28
8.0.70.0120.00717.20
8.0.60.0140.00717.30
8.0.50.0140.00617.28
8.0.30.0140.00417.30
8.0.20.0120.00617.40
8.0.10.0100.00817.37
7.4.330.0070.00316.46
7.4.320.0120.00217.13
7.4.300.0080.00517.02
7.4.290.0090.00617.02
7.4.280.0140.00217.02
7.4.270.0110.00516.99
7.4.260.0130.00516.96
7.4.250.0140.00517.01
7.4.240.0130.00416.99
7.4.230.0120.00416.96
7.4.220.0080.00416.96
7.4.210.0130.00217.00
7.4.200.0100.00616.96
7.4.190.0130.00317.10
7.4.180.0090.00517.05
7.4.160.0090.00617.04
7.4.150.0100.00716.94
7.4.140.0100.00516.97
7.4.130.0100.00416.92
7.4.120.0100.00516.91
7.4.110.0090.00716.95
7.4.100.0120.00517.04
7.4.90.0120.00316.88
7.4.80.0090.00716.94
7.4.70.0120.00416.97
7.4.60.0080.00716.94
7.4.50.0100.00616.91
7.4.40.0110.00516.87
7.4.30.0120.00416.91
7.4.20.0120.00416.95
7.4.10.0100.00616.90
7.4.00.0130.00216.96

preferences:
138.88 ms | 403 KiB | 5 Q