3v4l.org

run code in 300+ PHP versions simultaneously
<?php $offsets = [ 1 => [0,2], 2 => [2,5], 3 => [8,9] ]; $html = <<<HTML <div>This is</div> only a test for stackoverflow HTML; $ignoreTag = false; $insertTagStart = false; $char = 0; for ($i = 0; $i < strlen($html); ++$i) { if ($ignoreTag && $html[$i] == '>') { $ignoreTag = false; } elseif ($html[$i] == '<') { if ($insertTagStart !== false) { // insert tag interruption, print closing tag, modify the lookup ++$offsets[$insertTagStart][0]; $html = substr_replace($html, "</span>", $i, 0); $i += 6; // </span> = 7 minus 1 before loop's increment } $ignoreTag = true; } else { foreach ($offsets as $id => $set) { if ($char == $set[0]) { $insertTagStart = $id; $insertTag = "<span class='annotation n-{$id}'>"; $i += strlen($insertTag) - 1; // compensate for inserted substring while traversing html $html = substr_replace($html, $insertTag, $char, 0); } elseif ($insertTagStart == $id && $set[1] == $char) { $html = substr_replace($html, "</span>", $char, 0); $insertTagStart = false; } } ++$char; } echo "{$char},\t" , ($ignoreTag ? 't' : 'f') , ",\t" , ($insertTagStart === false ? 'f' : $insertTagStart) , ",\t" , $html , "\n"; } echo $html;
Output for git.master, git.master_jit, rfc.property-hooks
0, t, f, <div>This is</div> only a test for stackoverflow 1, t, 1, <span class='annotation n-1'><div>This is</div> only a test for stackoverflow 2, t, 1, <span class='annotation n-1'><div>This is</div> only a test for stackoverflow 3, t, 2, <s<span class='annotation n-2'></span>pan class='annotation n-1'><div>This is</div> only a test for stackoverflow 4, t, 2, <s<span class='annotation n-2'></span>pan class='annotation n-1'><div>This is</div> only a test for stackoverflow 5, t, 2, <s<span class='annotation n-2'></span>pan class='annotation n-1'><div>This is</div> only a test for stackoverflow 6, t, f, <s<sp</span>an class='annotation n-2'></span>pan class='annotation n-1'><div>This is</div> only a test for stackoverflow 7, t, f, <s<sp</span>an class='annotation n-2'></span>pan class='annotation n-1'><div>This is</div> only a test for stackoverflow 8, t, f, <s<sp</span>an class='annotation n-2'></span>pan class='annotation n-1'><div>This is</div> only a test for stackoverflow 9, t, 3, <s<sp</s<span class='annotation n-3'>pan>an class='annotation n-2'></span>pan class='annotation n-1'><div>This is</div> only a test for stackoverflow 10, t, f, <s<sp</s<</span>span class='annotation n-3'>pan>an class='annotation n-2'></span>pan class='annotation n-1'><div>This is</div> only a test for stackoverflow 11, t, f, <s<sp</s<</span>span class='annotation n-3'>pan>an class='annotation n-2'></span>pan class='annotation n-1'><div>This is</div> only a test for stackoverflow 12, t, f, <s<sp</s<</span>span class='annotation n-3'>pan>an class='annotation n-2'></span>pan class='annotation n-1'><div>This is</div> only a test for stackoverflow 13, t, f, <s<sp</s<</span>span class='annotation n-3'>pan>an class='annotation n-2'></span>pan class='annotation n-1'><div>This is</div> only a test for stackoverflow 14, t, f, <s<sp</s<</span>span class='annotation n-3'>pan>an class='annotation n-2'></span>pan class='annotation n-1'><div>This is</div> only a test for stackoverflow 15, t, f, <s<sp</s<</span>span class='annotation n-3'>pan>an class='annotation n-2'></span>pan class='annotation n-1'><div>This is</div> only a test for stackoverflow 16, t, f, <s<sp</s<</span>span class='annotation n-3'>pan>an class='annotation n-2'></span>pan class='annotation n-1'><div>This is</div> only a test for stackoverflow 17, t, f, <s<sp</s<</span>span class='annotation n-3'>pan>an class='annotation n-2'></span>pan class='annotation n-1'><div>This is</div> only a test for stackoverflow 18, t, f, <s<sp</s<</span>span class='annotation n-3'>pan>an class='annotation n-2'></span>pan class='annotation n-1'><div>This is</div> only a test for stackoverflow 19, t, f, <s<sp</s<</span>span class='annotation n-3'>pan>an class='annotation n-2'></span>pan class='annotation n-1'><div>This is</div> only a test for stackoverflow 20, t, f, <s<sp</s<</span>span class='annotation n-3'>pan>an class='annotation n-2'></span>pan class='annotation n-1'><div>This is</div> only a test for stackoverflow 21, t, f, <s<sp</s<</span>span class='annotation n-3'>pan>an class='annotation n-2'></span>pan class='annotation n-1'><div>This is</div> only a test for stackoverflow 22, t, f, <s<sp</s<</span>span class='annotation n-3'>pan>an class='annotation n-2'></span>pan class='annotation n-1'><div>This is</div> only a test for stackoverflow 22, f, f, <s<sp</s<</span>span class='annotation n-3'>pan>an class='annotation n-2'></span>pan class='annotation n-1'><div>This is</div> only a test for stackoverflow 22, t, f, <s<sp</s<</span>span class='annotation n-3'>pan>an class='annotation n-2'></span>pan class='annotation n-1'><div>This is</div> only a test for stackoverflow 23, t, f, <s<sp</s<</span>span class='annotation n-3'>pan>an class='annotation n-2'></span>pan class='annotation n-1'><div>This is</div> only a test for stackoverflow 24, t, f, <s<sp</s<</span>span class='annotation n-3'>pan>an class='annotation n-2'></span>pan class='annotation n-1'><div>This is</div> only a test for stackoverflow 25, t, f, <s<sp</s<</span>span class='annotation n-3'>pan>an class='annotation n-2'></span>pan class='annotation n-1'><div>This is</div> only a test for stackoverflow 25, f, f, <s<sp</s<</span>span class='annotation n-3'>pan>an class='annotation n-2'></span>pan class='annotation n-1'><div>This is</div> only a test for stackoverflow 26, f, f, <s<sp</s<</span>span class='annotation n-3'>pan>an class='annotation n-2'></span>pan class='annotation n-1'><div>This is</div> only a test for stackoverflow 27, f, f, <s<sp</s<</span>span class='annotation n-3'>pan>an class='annotation n-2'></span>pan class='annotation n-1'><div>This is</div> only a test for stackoverflow 28, f, f, <s<sp</s<</span>span class='annotation n-3'>pan>an class='annotation n-2'></span>pan class='annotation n-1'><div>This is</div> only a test for stackoverflow 29, f, f, <s<sp</s<</span>span class='annotation n-3'>pan>an class='annotation n-2'></span>pan class='annotation n-1'><div>This is</div> only a test for stackoverflow 30, f, f, <s<sp</s<</span>span class='annotation n-3'>pan>an class='annotation n-2'></span>pan class='annotation n-1'><div>This is</div> only a test for stackoverflow 31, f, f, <s<sp</s<</span>span class='annotation n-3'>pan>an class='annotation n-2'></span>pan class='annotation n-1'><div>This is</div> only a test for stackoverflow 32, f, f, <s<sp</s<</span>span class='annotation n-3'>pan>an class='annotation n-2'></span>pan class='annotation n-1'><div>This is</div> only a test for stackoverflow 32, t, f, <s<sp</s<</span>span class='annotation n-3'>pan>an class='annotation n-2'></span>pan class='annotation n-1'><div>This is</div> only a test for stackoverflow 33, t, f, <s<sp</s<</span>span class='annotation n-3'>pan>an class='annotation n-2'></span>pan class='annotation n-1'><div>This is</div> only a test for stackoverflow 34, t, f, <s<sp</s<</span>span class='annotation n-3'>pan>an class='annotation n-2'></span>pan class='annotation n-1'><div>This is</div> only a test for stackoverflow 35, t, f, <s<sp</s<</span>span class='annotation n-3'>pan>an class='annotation n-2'></span>pan class='annotation n-1'><div>This is</div> only a test for stackoverflow 36, t, f, <s<sp</s<</span>span class='annotation n-3'>pan>an class='annotation n-2'></span>pan class='annotation n-1'><div>This is</div> only a test for stackoverflow 36, f, f, <s<sp</s<</span>span class='annotation n-3'>pan>an class='annotation n-2'></span>pan class='annotation n-1'><div>This is</div> only a test for stackoverflow 37, f, f, <s<sp</s<</span>span class='annotation n-3'>pan>an class='annotation n-2'></span>pan class='annotation n-1'><div>This is</div> only a test for stackoverflow 38, f, f, <s<sp</s<</span>span class='annotation n-3'>pan>an class='annotation n-2'></span>pan class='annotation n-1'><div>This is</div> only a test for stackoverflow 39, f, f, <s<sp</s<</span>span class='annotation n-3'>pan>an class='annotation n-2'></span>pan class='annotation n-1'><div>This is</div> only a test for stackoverflow 40, f, f, <s<sp</s<</span>span class='annotation n-3'>pan>an class='annotation n-2'></span>pan class='annotation n-1'><div>This is</div> only a test for stackoverflow 41, f, f, <s<sp</s<</span>span class='annotation n-3'>pan>an class='annotation n-2'></span>pan class='annotation n-1'><div>This is</div> only a test for stackoverflow 42, f, f, <s<sp</s<</span>span class='annotation n-3'>pan>an class='annotation n-2'></span>pan class='annotation n-1'><div>This is</div> only a test for stackoverflow 43, f, f, <s<sp</s<</span>span class='annotation n-3'>pan>an class='annotation n-2'></span>pan class='annotation n-1'><div>This is</div> only a test for stackoverflow 44, f, f, <s<sp</s<</span>span class='annotation n-3'>pan>an class='annotation n-2'></span>pan class='annotation n-1'><div>This is</div> only a test for stackoverflow 45, f, f, <s<sp</s<</span>span class='annotation n-3'>pan>an class='annotation n-2'></span>pan class='annotation n-1'><div>This is</div> only a test for stackoverflow 46, f, f, <s<sp</s<</span>span class='annotation n-3'>pan>an class='annotation n-2'></span>pan class='annotation n-1'><div>This is</div> only a test for stackoverflow 47, f, f, <s<sp</s<</span>span class='annotation n-3'>pan>an class='annotation n-2'></span>pan class='annotation n-1'><div>This is</div> only a test for stackoverflow 48, f, f, <s<sp</s<</span>span class='annotation n-3'>pan>an class='annotation n-2'></span>pan class='annotation n-1'><div>This is</div> only a test for stackoverflow 49, f, f, <s<sp</s<</span>span class='annotation n-3'>pan>an class='annotation n-2'></span>pan class='annotation n-1'><div>This is</div> only a test for stackoverflow 50, f, f, <s<sp</s<</span>span class='annotation n-3'>pan>an class='annotation n-2'></span>pan class='annotation n-1'><div>This is</div> only a test for stackoverflow 51, f, f, <s<sp</s<</span>span class='annotation n-3'>pan>an class='annotation n-2'></span>pan class='annotation n-1'><div>This is</div> only a test for stackoverflow 52, f, f, <s<sp</s<</span>span class='annotation n-3'>pan>an class='annotation n-2'></span>pan class='annotation n-1'><div>This is</div> only a test for stackoverflow 53, f, f, <s<sp</s<</span>span class='annotation n-3'>pan>an class='annotation n-2'></span>pan class='annotation n-1'><div>This is</div> only a test for stackoverflow 54, f, f, <s<sp</s<</span>span class='annotation n-3'>pan>an class='annotation n-2'></span>pan class='annotation n-1'><div>This is</div> only a test for stackoverflow 55, f, f, <s<sp</s<</span>span class='annotation n-3'>pan>an class='annotation n-2'></span>pan class='annotation n-1'><div>This is</div> only a test for stackoverflow 56, f, f, <s<sp</s<</span>span class='annotation n-3'>pan>an class='annotation n-2'></span>pan class='annotation n-1'><div>This is</div> only a test for stackoverflow 57, f, f, <s<sp</s<</span>span class='annotation n-3'>pan>an class='annotation n-2'></span>pan class='annotation n-1'><div>This is</div> only a test for stackoverflow 58, f, f, <s<sp</s<</span>span class='annotation n-3'>pan>an class='annotation n-2'></span>pan class='annotation n-1'><div>This is</div> only a test for stackoverflow 59, f, f, <s<sp</s<</span>span class='annotation n-3'>pan>an class='annotation n-2'></span>pan class='annotation n-1'><div>This is</div> only a test for stackoverflow 60, f, f, <s<sp</s<</span>span class='annotation n-3'>pan>an class='annotation n-2'></span>pan class='annotation n-1'><div>This is</div> only a test for stackoverflow 61, f, f, <s<sp</s<</span>span class='annotation n-3'>pan>an class='annotation n-2'></span>pan class='annotation n-1'><div>This is</div> only a test for stackoverflow 62, f, f, <s<sp</s<</span>span class='annotation n-3'>pan>an class='annotation n-2'></span>pan class='annotation n-1'><div>This is</div> only a test for stackoverflow 63, f, f, <s<sp</s<</span>span class='annotation n-3'>pan>an class='annotation n-2'></span>pan class='annotation n-1'><div>This is</div> only a test for stackoverflow 64, f, f, <s<sp</s<</span>span class='annotation n-3'>pan>an class='annotation n-2'></span>pan class='annotation n-1'><div>This is</div> only a test for stackoverflow 65, f, f, <s<sp</s<</span>span class='annotation n-3'>pan>an class='annotation n-2'></span>pan class='annotation n-1'><div>This is</div> only a test for stackoverflow 66, f, f, <s<sp</s<</span>span class='annotation n-3'>pan>an class='annotation n-2'></span>pan class='annotation n-1'><div>This is</div> only a test for stackoverflow <s<sp</s<</span>span class='annotation n-3'>pan>an class='annotation n-2'></span>pan class='annotation n-1'><div>This is</div> only a test for stackoverflow

This tab shows result from various feature-branches currently under review by the php developers. Contact me to have additional branches featured.

Active branches

Archived branches

Once feature-branches are merged or declined, they are no longer available. Their functionality (when merged) can be viewed from the main output page


preferences:
59.82 ms | 425 KiB | 8 Q