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.33, 8.2.0 - 8.2.29, 8.3.0 - 8.3.26, 8.4.1 - 8.4.13
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:
139.37 ms | 410 KiB | 5 Q