Пытаюсь занести данные из текстового файла в file в массив и сравнить. Но столкнулся с проблемой, что с кириллицей ничего не работает. Если текст в текстовом файле на английском, то все отлично, а если на русском in_array отказывается работать.
Файл обработчик:
$text = $_POST["chat"];
if (in_array($text, file(names.txt))) {
echo "Совпадение найдено!";
//какой-то еще код
}
Файл names.txt:
Заказ
Оформление
Договор
Функция file() разбивает файл на строки и помещает их в массив. НО(!!!) символ завершения строки не удаляет. Соответственно ваш файл преобразуется в массив:
["Заказ\n",
"Оформление\n",
"Договор\n"]
Для того, чтобы избежать этой ситуации, необходимо использовать флаг FILE_IGNORE_NEW_LINES (ну и FILE_SKIP_EMPTY_LINES тоже полезно добавить)
Соответственно:
file(names.txt, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники