I am working with a couple of files, listed in a folder named states
.
Here is an example of where my files are exactly located:root/states/state_name/type_name/city_name.txt
There are multiple states, cities, types and files in this structure.
I want to find every city Id
in my database, then rename city_name.txt
to city_id.txt
Here's what I did to make this work:
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');
}
}
}
It didn't work at all!$state_id
returns false and the foreach
loops to next state.
I tried to echo $state in every loop, and returned some �������� � �
characters.
My problem is that PHP
scandir()
returns Persian filenames in a wrong unicode.
I tried to add a header
on top of my code also, but it doesn't make any changes.
Any suggestions and comments is appreciated!