PHP在scandir()和rename()中使用波斯语字符
我正在处理几个文件,这些文件列在名为PHP在scandir()和rename()中使用波斯语字符,php,unicode,persian,scandir,Php,Unicode,Persian,Scandir,我正在处理几个文件,这些文件列在名为states的文件夹中 下面是我的文件的确切位置示例: root/states/state\u name/type\u name/city\u name.txt 此结构中有多个州、城市、类型和文件。 我想在我的数据库中找到每个city Id,然后将city\u name.txt重命名为city\u Id.txt 以下是我所做的工作: header('Content-type: text/html; charset=utf-8'); include('dbcla
states
的文件夹中下面是我的文件的确切位置示例:
root/states/state\u name/type\u name/city\u name.txt
此结构中有多个州、城市、类型和文件。
我想在我的数据库中找到每个
city Id
,然后将city\u name.txt
重命名为city\u 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\u id
返回false,并且foreach
循环到下一个状态。我试图在每个循环中回显$state,并返回了一些
�������� � �代码>字符
我的问题是PHPscandir()
返回的波斯语文件名的unicode格式错误
我还试图在代码的顶部添加一个标题
,但它没有做任何更改
任何建议和意见都将不胜感激