Учитывая эту строку:
$somethingawesome = '<[return date("Y-m-d", strtotime("yesterday"));]>,<[return "cool!";]>,TRUE,foo';
Как я могу получить массив, как это:
Array
(
[0] => <[return date("Y-m-d", strtotime("yesterday"));]>
[1] => <[return "cool!";]>
[2] => TRUE
[3] => foo
)
Исходя из заданной вами строки, вы можете использовать следующее …
$results = preg_split('/(?:<[^>]*>)?\K,/', $str);
print_r($results);
Выход
Array
(
[0] => <[return date("Y-m-d", strtotime("yesterday"));]>
[1] => <[return "cool!";]>
[2] => TRUE
[3] => foo
)
Или, конечно, вы можете сопоставить все вместо использования разделения.
preg_match_all('/<[^>]+>|[^><,]+/', $str, $matches);
,(?=(?:[^\]\[]*\[[^\]]*\])*[^\]\[]*$)
Попробуйте это. См. Демо. Заменить на \n
,