Como gerar todas as permutações de uma string em PHP?

Eu preciso de um algoritmo que retorne todas as combinações possíveis de todos os caracteres em uma string.

Eu tentei:

$langd = strlen($input);
 for($i = 0;$i < $langd; $i++){
     $tempStrang = NULL;
     $tempStrang .= substr($input, $i, 1);
  for($j = $i+1, $k=0; $k < $langd; $k++, $j++){
   if($j > $langd) $j = 0;
   $tempStrang .= substr($input, $j, 1);
 }
 $myarray[] = $tempStrang;
}

Mas isso retorna apenas a mesma combinação de quantidade que o comprimento da string.

Fale o$input = "hey", o resultado seria:hey, hye, eyh, ehy, yhe, yeh.

questionAnswers(4)

yourAnswerToTheQuestion