Вы можете разделить символы слова на массив и зациклить их, а также разделить символы из указанной строки в массив.
Если один из символов слова встречается в символах из указанного массива строк,удалить символ из обоих массивов.
После завершения цикла убедитесь, что в символах из указанного массива строк больше не осталось символов.
$words = ["apple", "sample", "app", "justappgg", "тоҷик", "отабек", "баҳодурбек", "APELCIN", "API", "pap"];
mb_internal_encoding("UTF-8");
foreach ($words as $word) {
$wordSplit = preg_split('//u', $word, null, PREG_SPLIT_NO_EMPTY);
$strSplit = preg_split('//u', $str, null, PREG_SPLIT_NO_EMPTY);
$wordSplit = array_filter($wordSplit, function ($x) use (&$strSplit) {
if (in_array(strtolower($x), array_map('strtolower', $strSplit), true)) {
$pos = array_search(strtolower($x), array_map('strtolower', $strSplit), true);
unset($strSplit[$pos]);
return false;
}
return true;
});
if (count($strSplit) === 0) {
echo "$word contains all letters of $str" . PHP_EOL;
}
}
Demo