Как размножить текст на PHP?
Имеется такой текст:
{Вкуси же, друг,|Съешь ещё этих {мягких|свежих}} {французских|испанских} {булок|пончиков}, да выпей {чаю|кофе}.Нужно сгенерировать все возможные варианты этого текста, которые можно получить путем "раскрытия скобок". Скобки могут быть вложенные.
Для этой задачи в закромах имеется такое народное творчество:
function multiply_text($text) {
$result = array($text);
do {
$found = array();
$tmp = array();
foreach ($result as $key=>$string) {
if (preg_match('/\{([^\{\}]+)\}/Uis', $string, $matches)) {
$found[] = $key;
$substrings = explode('|', $matches[1]);
foreach ($substrings as $s) {
$tmp[] = preg_replace('/\{'.preg_quote($matches[1]).'\}/Uis', $s, $string);
}
}
}
if (count($found) > 0) {
foreach($found as $key){
unset($result[$key]);
}
$result = array_unique(array_merge($result, $tmp));
}
} while (count($found) > 0);
return $result;
}