пусть есть предложение {val1|val2} {action1|action2} ..... {xxx1|xxx2|xxx3} как теперь это дело перебрать и сгенерить предложение val1 action2 xxx2? с учетом что кусков {} может быть сколько угодно
Можно разбить, как уже сказали, в массив, либо поработав со строкой посчитать сколько пар {} встречается.
PHP: <pre><?php $str = '{xxx1|xxx2} {yyy1|yyy2} {zzz1|zzz2|zzz3}'; preg_match_all('/\{(.*?)\}/', $str, $matches); $rows = array(); foreach($matches[1] as $match) $rows[] = explode('|', $match); print_r($rows); ?></pre> Дальше сам сможешь?