3v4l.org

run code in 300+ PHP versions simultaneously
<?php $string = 'title:hello;desc:message|title:lorem;desc:ipsum;ids:1,2,3'; $result = []; foreach (explode('|', $string) as $setString) { $set = []; foreach (explode(';', $setString) as $rowString) { [$key, $value] = explode(':', $rowString); $set[$key] = str_contains($value, ',') ? explode(',', $value) : $value; } $result[] = $set; } var_export($result); /* Array ( [0] => Array ( [title] => hello [desc] => message ) [1] => Array ( [title] => lorem [desc] => ipsum [ids] => Array ( [0] => 1 [1] => 2 [2] => 3 ) ) )*/

preferences:
57.67 ms | 406 KiB | 5 Q