Я использую PHP для извлечения имен файлов в папке: while (false! == ($ entry = readdir ($ handle)))
Для каждой записи $ я хочу отметитьБаза данных MySQL, если есть запись с этой записью $.
Она работает для обычных строк без специальных символов, но не работает с файлами, такими как: AdigûzelElbinur21.03.2001.jpg, TruöngNgoc Mai13.09.2009.jpg,...
Моя база данных MySQL, таблицы и поля используют utf8_general_ci.Я ищу в представлении, которое создает объединение двух таблиц (все utf8_general_ci).
Насколько я вижу, имена файлов со специальными символами находятся в кодировке UTF-8, как и мой файл PHP.
Этот скрипт выполняется на сервере Centos 7 с версией PHP 7.3.9.
Я пытался определить, является ли строка UTF8 или нет, и конвертировать, но это не работает.
Этоработает для обычных имен файлов:
while (false !== ($entry = readdir($handle))) {
if($entry !=='.' && $entry !=='..' && $entry !== '__MACOSX'){
echo "<div class=\"bold\">$entry</div>";
$sqlentry = mysqli_real_escape_string($link, $entry);
$query = "select pointer from vwLeerlingenFotosNaarSmartschool where zoekstring = '$sqlentry'";
}
}
Я также пытался загрузить данные из представления vwLeerlingenFotosNaarSmartschool в массив
$query = "select distinct pointer from vwLeerlingenFotosNaarSmartschool";
$result = mysqli_query($link, $query);
$arr_pointer = array();
while($row = mysqli_fetch_assoc($result)){
$pointer = $row['pointer'];
$arr_pointer[$pointer] = $row['zoekstring'];
}
При поиске в $ arr_pointer с использованием
var_dump(in_array($entry, $arr_pointer));
Он также не может найти строку.
Как я могу убедиться, что имена файлов указаны в правильной кодировке, которую я могу найти в базе данных (или в массиве).