3v4l.org

run code in 300+ PHP versions simultaneously
<?php class MyParser { priuvate $domdoc; public function __construct(DOMDocument $domdoc){ $this->domdoc = $domdoc; } public function __toString() { protected function replaceVariableInside($varName, $text, $idType, $idValue) { $nodes = $this->getNodes($idType, $idValue); $newTextNode = $this->getNodeFromText($text); array_map(function($node) use ($varName, $newTextNode){ /* @var $node DOMNode */ $textNodes = array_filter($node->childNodes, function($node){ return $node->nodeType === XML_TEXT_NODE; }); foreach ($textNodes as $textNode) { /* @var $textNode \DOMText */ $pos = strpos($textNode->nodeValue, $varName); if($pos !== false) { $newNode = $textNode->splitText($pos); $newNode->nodeValue = substr($newNode->nodeValue, strlen($varName)); $newNode->insertBefore($newTextNode); } } }, $nodes); } protected function getNodes($idType, $idValue) { switch ($idType){ case 'id': return [ $this->domdoc->getElementById($idValue) ]; break; case 'class': return (new DOMXPath($this->domdoc)) ->query("//*[contains(concat(' ', normalize-space(@class), ' '), ' $idValue ')]"); break; default: break; } } protected function insertInto($idType, $id, $text) { $newnode = $this->getNodeFromText($text); array_map(function($elementOfDom) use ($newnode){ /* @var $elementOfDom DOMNode */ @$elementOfDom->appendChild($newnode); }, $this->getNodes($idType, $id)); } protected function getNodeFromText($text) { $text = html_entity_decode($text); try { $tmp = new DOMDocument; $textDocumentRes = @$tmp->loadHTML('<?xml encoding="utf-8" ?><span>'.$text.'</span>'); } catch(Exception $e) { $textDocumentRes = false; } if($textDocumentRes) { $newnode = $this->domdoc->importNode($tmp->documentElement->firstChild->firstChild, true); } else { $newnode = $this->domdoc->createTextNode($text); $newnode->nodeValue = $text; } return $newnode; } }

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)
7.2.90.0110.00614.29
7.2.80.0060.00914.35
7.2.70.0120.00414.74
7.2.60.0080.00614.60
7.2.50.0130.00614.48
7.2.40.0270.00714.61
7.2.30.0750.00014.81
7.2.20.0650.00714.52
7.2.10.0410.00614.98
7.2.00.0120.00914.71
7.1.210.0060.00913.30
7.1.200.0440.00713.46
7.1.190.0160.00813.67
7.1.180.0150.01513.68
7.1.170.1000.00013.47
7.1.160.0090.00913.57
7.1.150.1170.00713.35
7.1.140.0420.00713.84
7.1.130.0040.01113.63
7.1.120.0080.01213.36
7.1.110.0930.00713.34
7.1.100.0790.00613.80
7.1.90.0060.01013.71
7.1.80.0920.00913.41
7.1.70.0270.01013.53
7.1.60.0260.00731.59
7.1.50.0530.00931.61
7.1.40.0300.00731.57
7.1.30.0840.00631.62
7.1.20.0260.01631.60
7.1.10.0620.00013.64
7.1.00.0860.00713.61
7.0.310.0150.00312.98
7.0.300.0920.00713.30
7.0.290.0110.00712.79
7.0.280.0890.01013.14
7.0.270.0500.00312.81
7.0.260.0550.00712.92
7.0.250.0810.00712.86
7.0.240.0870.00313.12
7.0.230.0030.01512.84
7.0.220.0100.00313.21
7.0.210.1330.00613.02
7.0.200.0920.01213.23
7.0.190.0100.00613.23
7.0.180.0360.00413.19
7.0.170.0030.01313.41
7.0.160.0280.00713.18
7.0.150.0110.00612.98
7.0.140.0380.00013.14
7.0.130.0170.00013.37
7.0.120.0170.01013.56
7.0.110.0230.00013.36
7.0.100.0070.00413.59
7.0.90.0090.00313.38
7.0.80.0610.00613.48
7.0.70.0610.00013.48
7.0.60.1060.00013.49
7.0.50.0060.00613.50
7.0.40.0060.00613.42
7.0.30.0090.00313.35
7.0.20.1270.00613.39
7.0.10.0070.00713.64
7.0.00.0920.00613.51

preferences:
136.66 ms | 1394 KiB | 7 Q