Я работаю с парой файлов, перечисленных в папке с именем states
,
Вот пример, где мои файлы точно расположены:
root/states/state_name/type_name/city_name.txt
В этой структуре есть несколько штатов, городов, типов и файлов.
Я хочу найти каждый city Id
в моей базе данных, затем переименуйте city_name.txt
в city_id.txt
Вот что я сделал, чтобы сделать эту работу:
header('Content-type: text/html; charset=utf-8');
include('dbclass/Db.class.php');
$db=new DB();
$states=scandir('states');
foreach($states as $state)
{
if($state=='.'||$state=='..')
continue;
$state_id=$db->row('SELECT id FROM target_state WHERE state=:state',array('state'=>$state));
if(!$state_id)
continue;
$types=scandir('states/'.$state);
foreach($types as $type)
{
$cities=scandir('states/'.$state.'/'.$type);
foreach($cities as $city)
{
$city_id=$db->row('SELECT id FROM target_city WHERE state_id=:state_id AND city=:city',array('state_id'=>$state_id['id'],'city'=>$city));
rename('states/'.$state.'/'.$type.'/'.$city.'.txt','states/'.$state.'/'.$type.'/'.$city_id['id'].'.txt');
}
}
}
Это не сработало вообще!
$state_id
возвращает ложь и foreach
переходит в следующее состояние.
Я попытался отобразить $ state в каждом цикле и вернул несколько �������� � �
персонажи.
Моя проблема в том, что PHP
scandir()
возвращает персидские имена файлов в неправильном Unicode.
Я пытался добавить header
поверх моего кода тоже, но он не вносит никаких изменений.
Любые предложения и комментарии приветствуются!
Задача ещё не решена.
Других решений пока нет …