$string = "{Пожалуйста,|Просто|Если сможете,} сделайте так, чтобы это {удивительное|крутое|
простое|важное|бесполезное} тестовое предложение {изменялось {быстро|мгновенно|
оперативно|правильно} случайным образом|менялось каждый раз}.";
/*
* CallBack функция
*
*/
function firstRask($matches) {
$str = substr($matches[0], 1, strlen($matches[0]) - 2);
$str = preg_replace_callback('~{(?>[^{}]+|(?0))*}~', 'firstRask', $str);
$oneVariant = explode('|', "$str");
return $oneVariant[mt_rand(0, count($oneVariant) - 1)];
}
$variant = preg_replace_callback('~{(?>[^{}]+|(?0))*}~', 'firstRask', $string);
echo $variant;
echo '<br>';
Данный отрезок позволяет кода позволяет каждый раз из строки $string формировать текст раскрывая по-разному фигурные скобки.
Как сделать так, чтобы результат помещался в ячейку массива, и он всегда отличался от того что есть внутри массива. И главное, чтобы поместились все возможные значения. По теории вероятности я посчитал порядка 120.