<?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