Наверное, проще взломать базы данных пентагона, чем понять эти схемы. :) Вот есть строка '1 2 3 4 5 6', а что требуется? :)
UPD 1
Ну вот я попробовала по-своему повторить функционал вашего скрипта.
$text = 'это такая жопа что просто офигеть';
$array = preg_split('-([\W])-u', $text, -1, PREG_SPLIT_NO_EMPTY);
$result = array();
$length = count($array);
$i = 0;
$f = 0;
do {
$str = '';
do {
$str .= ' '.$array[$f];
$result[] = trim($str);
$f++;
}
while($f < $length);
$i++;
$f = $i;
}
while($i < $length);
Но никак не могу понять, что и зачем нужно собрать. :))) По-моему, не хватает условий. Если мы создаём элементы перебора, то чего там может не быть? Как может не быть "голубой полоски", если она является частью данного набора для перебора? :) Вот вы узнали варианты перебора (не все, конечно, но так, наверное, и задумано; я про то, что нет же вариантов "2 1 3" и т.п.), и эти варианты нужно где-то применить, наверное? Не понимаю. :)
UPD 2
Ну если так, то нужно же разрабатывать алгоритмы. По-моему, логичнее пробовать перевести всю фразу целиком, затем без одного слова, потом ещё без одного и т.д. После этого - начинать отнимать слова с другой стороны. В общем, типа так:
Array
(
[0] => Array
(
[0] => это такая жопа что просто офигеть
[1] => это такая жопа что просто
[2] => это такая жопа что
[3] => это такая жопа
[4] => это такая
[5] => это
)
[1] => Array
(
[0] => такая жопа что просто офигеть
[1] => такая жопа что просто
[2] => такая жопа что
[3] => такая жопа
[4] => такая
)
[2] => Array
(
[0] => жопа что просто офигеть
[1] => жопа что просто
[2] => жопа что
[3] => жопа
)
[3] => Array
(
[0] => что просто офигеть
[1] => что просто
[2] => что
)
[4] => Array
(
[0] => просто офигеть
[1] => просто
)
[5] => Array
(
[0] => офигеть
)
)