3v4l.org

run code in 300+ PHP versions simultaneously
<?php $texto = "~0 11111111 ~1 222222222 ~2 3333333333 ~end ~0 aaaaaaaaaaa ~1 bbbbbbbbbb ~2 cccccccccc ~3 ddddddddddd ~end ~0 yyyyyyyyyyy xxxxxxxx ffffffffff ~1 rrrrrrrrrrrr ~end"; $sub_bloques = []; foreach(array_map('trim', explode("\n", $texto)) as $line) { if ($line && substr($line, 0, 1) !== '~') { $sub_bloques[] = $line; } if ($line == '~end') { $hola[] = $sub_bloques; $sub_bloques = []; } } var_dump($hola);
Output for 5.6.0 - 5.6.29, 7.0.0 - 7.0.20, 7.1.0 - 7.1.20, 7.2.5 - 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
array(3) { [0]=> array(3) { [0]=> string(8) "11111111" [1]=> string(9) "222222222" [2]=> string(10) "3333333333" } [1]=> array(4) { [0]=> string(11) "aaaaaaaaaaa" [1]=> string(10) "bbbbbbbbbb" [2]=> string(10) "cccccccccc" [3]=> string(11) "ddddddddddd" } [2]=> array(4) { [0]=> string(11) "yyyyyyyyyyy" [1]=> string(8) "xxxxxxxx" [2]=> string(10) "ffffffffff" [3]=> string(12) "rrrrrrrrrrrr" } }

preferences:
112.88 ms | 1679 KiB | 4 Q