Один из способов заключается в использовании взрыва и взрыва, и, как мы явно здесь (вы знаете значения и размер), это будет работать. Может быть, более быстрый способ с помощью регулярного выражения мгновенно разделить первую строку, но это было решение, которое пришло в голову на первый взгляд.
$string = 'eat|drink today|tomorrow';
// First split the string by the space between them, then by the pipe in separate arrays.
$removedSpace = explode(' ', $string);
// The action items.
$actions = explode('|', $removedSpace[0]);
// The periods/time of day items.
$dayPeriods = explode('|', $removedSpace[1]);
$final = [];
// Loop through actions and for each day period, generate the string.
foreach ($actions as $action) {
foreach ($dayPeriods as $dayPeriod) {
$final[] = $action . ' ' . $dayPeriod;
}
}
$finalString = implode(', ', $final); // Your desired result in string format without last comma.
[ПРАВИТЬ] Я писал свой ответ, пока первый ответ был опубликован. Не стесняйтесь удалить это. [/ EDIT]