Я полагаю, что решение может быть, учитывая две следующие переменные:
$textone = "pate";
$texttwo = "tape";
1. Сначала разбейте строки, чтобы получить два массива букв:
$arr1 = preg_split('//', $textone, -1, PREG_SPLIT_NO_EMPTY);
$arr2 = preg_split('//', $texttwo, -1, PREG_SPLIT_NO_EMPTY);
Обратите внимание, что, как указал @Mike в своем комментарии, вместо использования preg_split()
, как я это сделал в первый раз, для такой ситуации было бы лучше использовать str_split()
:
$arr1 = str_split($textone);
$arr2 = str_split($texttwo);
2. Затем отсортируйте этот массив, чтобы буквы были в алфавитном порядке:
sort($arr1);
sort($arr2);
3. После этого взорвите массивы, чтобы создать слов , где все буквы расположены в алфавитном порядке:
$text1Sorted = implode('', $arr1);
$text2Sorted = implode('', $arr2);
4. И, наконец, сравните эти два слова :
if ($text1Sorted == $text2Sorted) {
echo "$text1Sorted == $text2Sorted";
}
else {
echo "$text1Sorted != $text2Sorted";
}
Превращение этой идеи в функцию сравнения даст вам следующую часть кода:
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 />";
}
}
И вызов этой функции для ваших двух слов :
compare("pate", "tape");
compare("pate", "tapp");
Получит ли вы следующий результат:
aept == aept
aept != appt