Поскольку каждый говорит, что вы должны использовать preg_split, но только один человек ответил с выражением, которое соответствует вашим потребностям, , и я думаю, что это немного сложно - не сложно, немного многословно, но он обновил свой ответ, чтобы противостоять этому.
Это выражение - то, о чем говорилось в большинстве ответов.
/\[.*?\]/
Но это только распечатывает
Array
(
[0] => first
[1] => middle
[2] => last
)
и вы заявили, что хотите что-то внутри и за скобками, sio обновление будет:
/[\[.*?\]]/
Это дает вам:
Array
(
[0] => first
[1] => abc
[2] => middle
[3] => xyz
[4] => last
)
но, как вы видите, он также захватывает пробелы, поэтому давайте сделаем еще один шаг и избавимся от них:
/[\s]*[\[.*?\]][\s]*/
Это даст вам желаемый результат:
Array
(
[0] => first
[1] => abc
[2] => middle
[3] => xyz
[4] => last
)
Я думаю, это то выражение, которое вы ищете.
Вот прямая демонстрация вышеупомянутого регулярного выражения