I suppose a solution could be to, considering the two following variables :
$textone = "pate";
$texttwo = "tape";
1. First, split the strings, to get two arrays of letters :
$arr1 = preg_split('//', $textone, -1, PREG_SPLIT_NO_EMPTY);
$arr2 = preg_split('//', $texttwo, -1, PREG_SPLIT_NO_EMPTY);
Note that, as pointed out by @Mike in his comment, instead of using preg_split()
like I first did, for such a situation, one would be better off using str_split()
:
$arr1 = str_split($textone);
$arr2 = str_split($texttwo);
2. Then, sort those array, so the letters are in alphabetical order :
sort($arr1);
sort($arr2);
3. After that, implode the arrays, to create words where all letters are in alphabetical order :
$text1Sorted = implode('', $arr1);
$text2Sorted = implode('', $arr2);
4. And, finally, compare those two words :
if ($text1Sorted == $text2Sorted) {
echo "$text1Sorted == $text2Sorted";
}
else {
echo "$text1Sorted != $text2Sorted";
}
Turning this idea into a comparison function would give you the following portion of code :
function compare($textone, $texttwo) {
$arr1 = str_split($textone);
$arr2 = str_split($texttwo);
sort($arr1);
sort($arr2);
$text1Sorted = implode('', $arr1);
$text2Sorted = implode('', $arr2);
if ($text1Sorted == $text2Sorted) {
echo "$text1Sorted == $text2Sorted<br />";
}
else {
echo "$text1Sorted != $text2Sorted<br />";
}
}
And calling that function on your two words :
compare("pate", "tape");
compare("pate", "tapp");
Would get you the following result :
aept == aept
aept != appt