doupu1957 2017-09-24 17:30
浏览 50

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

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!

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥30 Unity接入微信SDK 无法开启摄像头
    • ¥20 有偿 写代码 要用特定的软件anaconda 里的jvpyter 用python3写
    • ¥20 cad图纸,chx-3六轴码垛机器人
    • ¥15 移动摄像头专网需要解vlan
    • ¥20 access多表提取相同字段数据并合并
    • ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
    • ¥20 Java-Oj-桌布的计算
    • ¥15 powerbuilder中的datawindow数据整合到新的DataWindow
    • ¥20 有人知道这种图怎么画吗?
    • ¥15 pyqt6如何引用qrc文件加载里面的的资源