function getUniqueCombinations($arr, $min = 1, $max = 100) {
$words_count = count($arr);
$combinations_count = pow(2, $words_count);
$combinations_arr = array();
for ($i = 0; $i < $combinations_count; $i ++) {
// 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
$binary_number = sprintf("%0" . $words_count . "b", $i);
$one_combination_arr = array();
for ($j = 0; $j < $words_count; $j ++) {
$binary_number{$j} == '1' and $one_combination_arr[] = $arr[$j];
}
count($one_combination_arr) >= $min && count($one_combination_arr) <= $max
and $combinations_arr[] = $one_combination_arr;
}
return $combinations_arr;
}
$s = "PHP general-purpose scripting language";
$arr1 = preg_split("/[\s,-.]+/", $s);
$s = "It was originally created by Danish";
$arr2 = preg_split("/[\s,-.]+/", $s);
$s = "PHP Tutorial. PHP server scripting language";
$arr3 = preg_split("/[\s,-.]+/", $s);
$combinations_arr = getUniqueCombinations($arr1);
$combinations_arr = array_merge($combinations_arr, getUniqueCombinations($arr2));
$combinations_arr = array_merge($combinations_arr, getUniqueCombinations($arr3));
// Convert multidimensional array into single array
$arr = array_map(function($s) { return implode(" ", $s); }, $combinations_arr);
// Remove duplicates from string
for ($i = 0; $i < count($arr); $i++)
$arr[$i] = implode(' ',array_unique(explode(' ', $arr[$i])));
$arr = array_unique($arr);
// reindex array
$arr = array_values($arr);
print_r($arr);
/*
run:
Array
(
[0] => language
[1] => scripting
[2] => scripting language
[3] => purpose
[4] => purpose language
[5] => purpose scripting
[6] => purpose scripting language
[7] => general
[8] => general language
[9] => general scripting
[10] => general scripting language
[11] => general purpose
[12] => general purpose language
[13] => general purpose scripting
[14] => general purpose scripting language
[15] => PHP
[16] => PHP language
[17] => PHP scripting
[18] => PHP scripting language
[19] => PHP purpose
[20] => PHP purpose language
[21] => PHP purpose scripting
[22] => PHP purpose scripting language
[23] => PHP general
[24] => PHP general language
[25] => PHP general scripting
[26] => PHP general scripting language
[27] => PHP general purpose
[28] => PHP general purpose language
[29] => PHP general purpose scripting
[30] => PHP general purpose scripting language
[31] => Danish
[32] => by
[33] => by Danish
[34] => created
[35] => created Danish
[36] => created by
[37] => created by Danish
[38] => originally
[39] => originally Danish
[40] => originally by
[41] => originally by Danish
[42] => originally created
[43] => originally created Danish
[44] => originally created by
[45] => originally created by Danish
[46] => was
[47] => was Danish
[48] => was by
[49] => was by Danish
[50] => was created
[51] => was created Danish
[52] => was created by
[53] => was created by Danish
[54] => was originally
[55] => was originally Danish
[56] => was originally by
[57] => was originally by Danish
[58] => was originally created
[59] => was originally created Danish
[60] => was originally created by
[61] => was originally created by Danish
[62] => It
[63] => It Danish
[64] => It by
[65] => It by Danish
[66] => It created
[67] => It created Danish
[68] => It created by
[69] => It created by Danish
[70] => It originally
[71] => It originally Danish
[72] => It originally by
[73] => It originally by Danish
[74] => It originally created
[75] => It originally created Danish
[76] => It originally created by
[77] => It originally created by Danish
[78] => It was
[79] => It was Danish
[80] => It was by
[81] => It was by Danish
[82] => It was created
[83] => It was created Danish
[84] => It was created by
[85] => It was created by Danish
[86] => It was originally
[87] => It was originally Danish
[88] => It was originally by
[89] => It was originally by Danish
[90] => It was originally created
[91] => It was originally created Danish
[92] => It was originally created by
[93] => It was originally created by Danish
[94] => server
[95] => server language
[96] => server scripting
[97] => server scripting language
[98] => PHP server
[99] => PHP server language
[100] => PHP server scripting
[101] => PHP server scripting language
[102] => Tutorial
[103] => Tutorial language
[104] => Tutorial scripting
[105] => Tutorial scripting language
[106] => Tutorial server
[107] => Tutorial server language
[108] => Tutorial server scripting
[109] => Tutorial server scripting language
[110] => Tutorial PHP
[111] => Tutorial PHP language
[112] => Tutorial PHP scripting
[113] => Tutorial PHP scripting language
[114] => Tutorial PHP server
[115] => Tutorial PHP server language
[116] => Tutorial PHP server scripting
[117] => Tutorial PHP server scripting language
[118] => PHP Tutorial
[119] => PHP Tutorial language
[120] => PHP Tutorial scripting
[121] => PHP Tutorial scripting language
[122] => PHP Tutorial server
[123] => PHP Tutorial server language
[124] => PHP Tutorial server scripting
[125] => PHP Tutorial server scripting language
)
*/