3v4l.org

run code in 300+ PHP versions simultaneously
<?php $pattern = "/(?(DEFINE)(?<p1>BEGIN)(?<p2>END))((?&p1)|(?&p2))+/"; $subject = <<<EOF BEGIN something(); BEGIN if (false) echo "e"; END END EOF; $count = preg_match_all($pattern, $subject, $matches); var_dump($count, $matches);
Output for 5.6.0 - 5.6.25, 7.0.0 - 7.0.20, 7.1.0 - 7.1.20, 7.2.0 - 7.2.33, 7.3.16 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.34, 8.2.0 - 8.2.30, 8.3.0 - 8.3.30, 8.4.1 - 8.4.18, 8.5.0 - 8.5.3
int(4) array(6) { [0]=> array(4) { [0]=> string(5) "BEGIN" [1]=> string(5) "BEGIN" [2]=> string(3) "END" [3]=> string(3) "END" } ["p1"]=> array(4) { [0]=> string(0) "" [1]=> string(0) "" [2]=> string(0) "" [3]=> string(0) "" } [1]=> array(4) { [0]=> string(0) "" [1]=> string(0) "" [2]=> string(0) "" [3]=> string(0) "" } ["p2"]=> array(4) { [0]=> string(0) "" [1]=> string(0) "" [2]=> string(0) "" [3]=> string(0) "" } [2]=> array(4) { [0]=> string(0) "" [1]=> string(0) "" [2]=> string(0) "" [3]=> string(0) "" } [3]=> array(4) { [0]=> string(5) "BEGIN" [1]=> string(5) "BEGIN" [2]=> string(3) "END" [3]=> string(3) "END" } }

preferences:
94.36 ms | 1689 KiB | 4 Q