Проблемы с обработкой кириллицы в вашем коде могут возникать по нескольким причинам:
1. **Кодировка**: Убедитесь, что файл с кодом и строка `$string` находятся в правильной кодировке, обычно это UTF-8. Если ваш PHP-файл сохранён в другой кодировке, это может привести к ошибкам при работе с многобайтовыми символами, такими как кириллица.
2. **Функции для многобайтовых строк**: Использование функций `mb_strlen`, `mb_substr_count` и `mb_str_split` вместо стандартных функций `strlen`, `substr` и `str_split` необходимо, чтобы корректно обрабатывать строки, содержащие многобайтовые символы.
3. **Ошибки в индексации**: При обращении к символам строки с помощью `$uniqueSymbols[$i]` вы должны гарантировать, что `$uniqueSymbols` обработан правильно.
С учетом всех этих аспектов, исправленный вариант вашего кода может выглядеть так:
```php
// Установим кодировку по умолчанию
mb_internal_encoding("UTF-8");
// Исходная строка
$string = 'тестовая строка';
// Строка с удаленными пробелами
$string = str_replace(' ', '', $string);
// Строка, где удалены все повторяющиеся символы
$uniqueSymbols = implode("", array_unique(mb_str_split($string, 1)));
// Перебираем строку через цикл for
for ($i = 0; $i < mb_strlen($uniqueSymbols); $i++) {
// Получаем текущий символ
$currentSymbol = mb_substr($uniqueSymbols, $i, 1);
// Считаем процентное содержание текущего символа
$percentage = mb_substr_count($string, $currentSymbol) / mb_strlen($string) * 100;
// Выводим символ и процент
echo $currentSymbol . ' - ' . round($percentage, 1) . ' %<br><br>';
}
```
Обратите внимание на следующие изменения:
- Установлена кодировка по умолчанию с помощью `mb_internal_encoding("UTF-8");`.
- Вместо `$string[$i]` используется `mb_substr($uniqueSymbols, $i, 1)` для получения символа. Это важно, так как `$uniqueSymbols` теперь может содержать такую же многобайтовую строку.
Эти изменения должны помочь вашему коду корректно обрабатывать кириллицу и правильно вычислять процентное содержание символов.