3v4l.org

run code in 500+ PHP versions simultaneously
<?php $html = ' <!DOCTYPE html> <html lang="fr"> <head> <meta charset="UTF-8"> <title>tester fusion</title> <style> span {color:red} .refid-valeur {white-space:nowrap} .char-style-override-6 {color:navy} </style> </head> <body> <div> <span class="refid-valeur char-style-override-6">special</span><span class="refid-valeur char-style-override-6"> </span><span class="refid-valeur char-style-override-6">espace</span> </div> <span class="refid-valeur char-style-override-6">RCR-ART-RCR-L</span><span class="refid-valeur char-style-override-6">213</span><span class="refid-valeur char-style-override-6">-1</span> <div> <span class="refid-valeur char-style-override-6">séquence avec child</span><span class="refid-valeur char-style-override-6"> P<span>A</span>S</span><span class="refid-valeur char-style-override-6"> </span><span class="refid-valeur char-style-override-6"><em>D</em>E PRO</span><span class="refid-valeur char-style-override-6">BLÈME</span><span class="refid-valeur char-style-override-6"> <strong>ICI</strong>?</span> </div> </body> </html> '; $dom = new DOMDocument; $dom->loadHTML($html, LIBXML_HTML_NODEFDTD | LIBXML_HTML_NOIMPLIED); $xp = new DOMXPath($dom); $firstElts = $xp->query('//span' // un element span n'importe où dans l'arbre DOM . '[@class="refid-valeur char-style-override-6"]' // avec l'attribut class recherché // qui n'est pas immédiatement précédé par un élément avec les mêmes caractéristiques . '[not(preceding-sibling::node()[1][local-name()="span"][@class="refid-valeur char-style-override-6"])]' // mais dont le nœud qui le suit immédiatement est un élément avec les mêmes caractéristiques . '[following-sibling::node()[1][local-name()="span"][@class="refid-valeur char-style-override-6"]]'); function isSameElt($node1, $node2) { if ( $node1->nodeName !== $node2->nodeName ) return false; if ( $node1->attributes->length !== $node2->attributes->length ) return false; foreach ( $node1->attributes as $attr ) { if ( !$node2->hasAttribute($attr->name) || $node2->getAttribute($attr->name) !== $attr->value ) return false; } return true; } $toDelete = []; foreach ($firstElts as $firstElt) { $current = $firstElt; while ( null !== $current = $current->nextSibling ) { if ( !isSameElt($firstElt, $current) ) break; foreach ($current->childNodes as $childNode) { $firstElt->appendChild($childNode); } $toDelete[] = $current; } } foreach ($toDelete as $node) { $node->parentNode->removeChild($node); } echo $dom->saveHTML();

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.30.0120.00719.53
8.5.20.0080.00920.00
8.5.10.0110.00817.11
8.5.00.0150.00920.41
8.4.180.0170.00520.04
8.4.170.0090.01422.23
8.4.160.0110.01126.08
8.4.150.0100.00417.12
8.4.140.0130.00917.96
8.4.130.0100.01118.82
8.4.120.0120.01017.97
8.4.110.0050.00524.27
8.4.100.0120.00918.07
8.4.90.0090.01220.89
8.4.80.0120.00619.11
8.4.70.0100.01119.45
8.4.60.0060.00819.44
8.4.50.0110.01019.21
8.4.40.0060.00318.04
8.4.30.0150.00618.20
8.4.20.0130.00719.79
8.4.10.0030.00618.07
8.3.300.0090.01118.85
8.3.290.0170.00421.31
8.3.280.0150.00818.70
8.3.270.0140.00517.13
8.3.260.0080.00917.10
8.3.250.0120.00816.83
8.3.240.0100.00917.12
8.3.230.0110.00816.95
8.3.220.0090.00819.25
8.3.210.0060.00217.06
8.3.200.0060.00317.01
8.3.190.0050.00517.73
8.3.180.0100.00916.95
8.3.170.0120.00617.60
8.3.160.0120.00618.79
8.3.150.0120.00619.33
8.3.140.0030.00617.75
8.3.130.0040.00417.05
8.3.120.0130.00619.41
8.3.110.0090.00320.94
8.3.100.0040.00424.06
8.3.90.0090.00626.77
8.3.80.0090.00017.25
8.3.70.0120.00617.13
8.3.60.0210.00018.68
8.3.50.0080.00718.62
8.3.40.0080.00819.18
8.3.30.0180.00319.09
8.3.20.0000.00819.53
8.3.10.0080.00022.15
8.3.00.0080.00023.91
8.2.300.0090.01322.39
8.2.290.0090.01017.02
8.2.280.0100.00818.91
8.2.270.0120.00817.56
8.2.260.0100.00017.22
8.2.250.0000.00920.86
8.2.240.0000.00819.46
8.2.230.0000.01022.58
8.2.220.0060.00337.54
8.2.210.0040.00426.77
8.2.200.0030.00618.56
8.2.190.0070.01417.13
8.2.180.0120.00325.92
8.2.170.0110.00419.50
8.2.160.0100.00622.96
8.2.150.0080.00024.18
8.2.140.0080.00424.66
8.2.130.0080.00021.63
8.2.120.0080.00026.35
8.2.110.0040.00720.85
8.2.100.0040.00818.28
8.2.90.0060.00318.40
8.2.80.0000.00818.13
8.2.70.0040.00418.55
8.2.60.0050.00318.43
8.2.50.0040.00418.10
8.2.40.0040.00419.72
8.2.30.0060.00319.71
8.2.20.0080.00018.57
8.2.10.0080.00318.41
8.2.00.0000.00719.76
8.1.340.0110.01017.85
8.1.330.0100.01016.81
8.1.320.0130.00618.15
8.1.310.0090.00920.57
8.1.300.0030.00619.05
8.1.290.0070.00330.84
8.1.280.0140.00725.92
8.1.270.0040.00423.99
8.1.260.0080.00026.35
8.1.250.0080.00028.09
8.1.240.0060.00321.19
8.1.230.0040.00823.13
8.1.220.0040.00418.16
8.1.210.0060.00319.21
8.1.200.0040.00417.85
8.1.190.0090.00317.73
8.1.180.0040.00418.10
8.1.170.0050.00319.17
8.1.160.0030.00619.29
8.1.150.0040.00419.23
8.1.140.0000.00818.08
8.1.130.0030.00519.33
8.1.120.0040.00417.76
8.1.110.0040.00417.79
8.1.100.0070.00017.77
8.1.90.0090.00017.90
8.1.80.0000.00817.79
8.1.70.0030.00517.91
8.1.60.0050.00317.90
8.1.50.0030.00517.86
8.1.40.0030.00517.89
8.1.30.0060.00317.96
8.1.20.0030.00618.10
8.1.10.0080.00017.95
8.1.00.0100.00017.94
8.0.300.0060.00320.36
8.0.290.0040.00417.13
8.0.280.0040.00418.78
8.0.270.0000.00717.53
8.0.260.0070.00017.73
8.0.250.0000.00717.26
8.0.240.0080.00017.39
8.0.230.0080.00017.34
8.0.220.0030.00517.32
8.0.210.0070.00017.29
8.0.200.0030.00317.27
8.0.190.0000.00817.39
8.0.180.0000.00817.25
8.0.170.0000.00817.30
8.0.160.0070.00017.26
8.0.150.0040.00417.21
8.0.140.0030.00317.13
8.0.130.0070.00013.70
8.0.120.0000.00717.26
8.0.110.0030.00517.31
8.0.100.0000.00717.22
8.0.90.0080.00017.16
8.0.80.0090.00717.24
8.0.70.0050.00317.34
8.0.60.0030.00517.32
8.0.50.0060.00317.14
8.0.30.0140.00617.33
8.0.20.0080.01117.45
8.0.10.0030.00617.39
8.0.00.0080.01017.05
7.4.330.0000.00515.55
7.4.320.0000.00716.91
7.4.300.0040.00416.93
7.4.290.0050.00316.83
7.4.280.0060.00316.77
7.4.270.0040.00416.95
7.4.260.0000.00716.93
7.4.250.0000.00916.97
7.4.240.0040.00416.98
7.4.230.0040.00316.79
7.4.220.0000.00716.69
7.4.210.0120.00516.96
7.4.200.0000.00717.02
7.4.160.0090.00716.94
7.4.140.0110.00917.86
7.4.130.0120.00616.93
7.4.120.0140.00716.87
7.4.110.0100.00716.87
7.4.100.0100.00716.88
7.4.90.0120.00616.97
7.4.80.0140.01019.39
7.4.70.0070.01117.00
7.4.60.0000.01516.99
7.4.50.0120.00616.97
7.4.40.0090.00917.13
7.4.00.0080.00715.22
7.3.330.0030.00313.64
7.3.320.0000.00613.73
7.3.310.0000.00716.66
7.3.300.0030.00316.56
7.3.290.0050.00316.62
7.3.280.0110.00816.72
7.3.260.0100.01016.74
7.3.240.0130.00616.79
7.3.230.0060.01617.02
7.3.210.0070.01016.61
7.3.200.0120.00616.84
7.3.190.0090.01317.04
7.3.180.0160.00017.01
7.3.170.0170.00016.95
7.3.160.0000.01616.99
7.3.120.0030.01615.11
7.3.110.0070.01115.03
7.3.100.0080.00815.02
7.3.90.0030.00914.93
7.3.80.0000.01414.91
7.3.70.0090.00314.75
7.3.60.0080.00314.75
7.3.50.0030.01014.86
7.3.40.0030.00715.23
7.3.30.0120.00014.91
7.3.20.0090.00916.82
7.3.10.0040.01116.56
7.3.00.0070.00616.84
7.2.330.0110.00817.20
7.2.320.0160.00916.98
7.2.310.0090.00916.97
7.2.300.0070.01417.16
7.2.290.0200.00316.98
7.2.250.0150.00415.34
7.2.240.0140.00715.49
7.2.230.0080.00815.02
7.2.220.0030.00615.37
7.2.210.0090.00015.07
7.2.200.0070.00715.36
7.2.190.0060.01015.05
7.2.180.0070.00715.14
7.2.170.0030.00615.38
7.2.130.0000.01116.88
7.2.120.0030.00916.88
7.2.110.0090.00617.02
7.2.100.0070.00816.88
7.2.90.0110.00516.87
7.2.80.0030.01217.10
7.2.70.0220.01016.07
7.2.60.0230.00716.21
7.2.50.0600.00316.04
7.2.40.0210.01016.16
7.2.30.0160.01216.29
7.2.20.0280.00516.17
7.2.10.0170.00616.10
7.2.00.0210.00716.21
7.1.330.0100.00315.77
7.1.320.0090.00616.25
7.1.310.0040.01116.16
7.1.300.0110.00316.05
7.1.290.0040.01216.11
7.1.280.0030.01015.85
7.1.270.0070.00715.74
7.1.260.0040.01116.05
7.1.250.0000.00815.59
7.1.200.0040.01116.05
7.1.170.0450.01013.90
7.1.160.0330.00414.02
7.1.150.0280.01314.02
7.1.140.0430.01014.23
7.1.130.0240.01014.08
7.1.120.0260.01014.27
7.1.110.0200.01414.17
7.1.100.0420.00714.21
7.1.90.0390.01014.19
7.1.80.0440.00714.04
7.1.70.0410.00914.06
7.1.60.0720.01031.91
7.1.50.0520.00731.91
7.1.40.0520.01032.00
7.1.30.0410.01632.11
7.1.20.0670.01632.18
7.1.10.0470.00313.81
7.1.00.0390.01314.25

preferences:
83.38 ms | 1712 KiB | 5 Q