Ya, me ha salido aunque tengo que retocar alguna cosilla pero básicamente es esto:
Código PHP:
function powerSet($in,$minLength = 1) {
$count = count($in);
$members = pow(2,$count);
$return = array();
for ($i = 0; $i < $members; $i++) {
$b = sprintf("%0".$count."b",$i);
$out = array();
for ($j = 0; $j < $count; $j++) {
if ($b{$j} == '1') $out[] = $in[$j];
}
$out_val = implode(" ", $out);
if (count($out) >= $minLength) {
$return[] = $out_val;
}
}
return $return;
}
$str_arr=explode(" ","diseno web madrid");
$resultado=powerSet($str_arr);
foreach ($resultado as $valor)
{
echo " $valor <br>";
}
Y la salida es esta:
madrid
web
web madrid
diseno
diseno madrid
diseno web
diseno web madrid
Gracias por la ayuda!