Файл semantic.txt - текстовой файл с кириллицей и латиницей, представляющий из себя 1тыс строк текста на кириллице. Задача кода - вывести 15 случайных строк из текстового файла, предварительно перемешав строки. Нижеприведенный код еще месяц назад работал нормально. Но, сейчас почему-то перестал работать. В чем может быть причина?
<?php
$arr = file('https://site.ru/themes/semantic.txt');
shuffle($arr);
$res = array_slice($arr, 0, 15);
foreach($res as $str){
echo htmlspecialchars($str);
}
?>
попробовал изменить версию PHP - стал отдавать строки в корявой кодировке. попытался переделать кодировку БД на utf8mb4_general_ci - тоже корявая кодировка. но в целом понятно, что проблема в кодировке... только не понятно что изменить надо...
В общем решили вопрос. Данил Бабаков предложил решение, которое исправило косяк:
<?php
$arr = file('https://site/semantic.txt');
shuffle($arr);
$res = array_slice($arr, 0, 15);
foreach ($res as $str) {
$get = mb_detect_encoding($str, array('utf-8', 'cp1251'));
echo iconv($get, 'UTF-8', $str);
}
?>