PHP使用scandir()中的波斯字符并重命名()

时间:2017-09-24 17:30:39

标签: php unicode persian scandir

我正在使用名为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返回false,foreach循环返回下一个状态 我试图在每个循环中回显$ state,并返回一些�������� � �个字符。

  

我的问题是PHP scandir()以错误的unicode返回波斯文件名。

我也试图在我的代码之上添加header,但它没有做任何更改。

感谢任何建议和意见!

0 个答案:

没有答案