3v4l.org

run code in 300+ PHP versions simultaneously
<?php $recur = 'FREQ=WEEKLY;BYDAY=TU'; $ex = explode(';', $recur); $freq = str_replace('FREQ=','',$ex[0]); $day = str_replace('BYDAY=','',$ex[1]); $dates = []; switch ($freq) { case 'WEEKLY': $date = new DateTime(); // set to correct day obvs $dates[] = $date; for ($x = 0; $x <= 52; $x ++) { $date = clone $date; $date->modify('+1 week'); $dates[] = $date; } break; } foreach($dates as $date) { echo $date->format('Y-m-d')."\n"; }
Output for 7.0.24 - 7.0.25, 7.1.10 - 7.1.20, 7.2.6 - 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.28, 8.2.0 - 8.2.19, 8.3.0 - 8.3.7
2017-10-26 2017-11-02 2017-11-09 2017-11-16 2017-11-23 2017-11-30 2017-12-07 2017-12-14 2017-12-21 2017-12-28 2018-01-04 2018-01-11 2018-01-18 2018-01-25 2018-02-01 2018-02-08 2018-02-15 2018-02-22 2018-03-01 2018-03-08 2018-03-15 2018-03-22 2018-03-29 2018-04-05 2018-04-12 2018-04-19 2018-04-26 2018-05-03 2018-05-10 2018-05-17 2018-05-24 2018-05-31 2018-06-07 2018-06-14 2018-06-21 2018-06-28 2018-07-05 2018-07-12 2018-07-19 2018-07-26 2018-08-02 2018-08-09 2018-08-16 2018-08-23 2018-08-30 2018-09-06 2018-09-13 2018-09-20 2018-09-27 2018-10-04 2018-10-11 2018-10-18 2018-10-25 2018-11-01
Output for 7.0.0 - 7.0.23, 7.1.0 - 7.1.9
2017-09-22 2017-09-29 2017-10-06 2017-10-13 2017-10-20 2017-10-27 2017-11-03 2017-11-10 2017-11-17 2017-11-24 2017-12-01 2017-12-08 2017-12-15 2017-12-22 2017-12-29 2018-01-05 2018-01-12 2018-01-19 2018-01-26 2018-02-02 2018-02-09 2018-02-16 2018-02-23 2018-03-02 2018-03-09 2018-03-16 2018-03-23 2018-03-30 2018-04-06 2018-04-13 2018-04-20 2018-04-27 2018-05-04 2018-05-11 2018-05-18 2018-05-25 2018-06-01 2018-06-08 2018-06-15 2018-06-22 2018-06-29 2018-07-06 2018-07-13 2018-07-20 2018-07-27 2018-08-03 2018-08-10 2018-08-17 2018-08-24 2018-08-31 2018-09-07 2018-09-14 2018-09-21 2018-09-28

preferences:
125.34 ms | 403 KiB | 182 Q