我有一个功能是扫描服务器上的目录,读取文件,用它做一些事情,然后删除目录(嵌套)
功能比较长,所以贴出相关部分。
//many other things ...
$dir_to_delete[] = $filename['dirname']; // the array to hold all the dirs.
} // end for each
$dir_to_delete_clean = array_unique($dir_to_delete); //clean array - we might have duplicated dir names
foreach ($dir_to_delete_clean as $delete) {
o99_deleteDirectory($delete) ;
}
// rmdir( $filename['dirname'] );
return $attc_id;
}
这是非空目录的删除功能:
function o99_deleteDirectory($dir) {
if (!file_exists($dir)) return true;
if (!is_dir($dir)) return unlink($dir);
foreach (scandir($dir) as $item) {
if ($item == '.' || $item == '..') continue;
if (!o99_deleteDirectory($dir.DIRECTORY_SEPARATOR.$item)) return false;
}
return rmdir($dir);
}
它工作得很好。
问题是 - 当我检查非英文字符(德语、中文、希伯来语、阿拉伯文、西里尔文 - 或任何其他字符)时 - 脚本失败并停止......
然后我尝试了 rename() , rmdir() 等 - 他们都失败了。这是一个 PHP 错误吗?我该如何解决这个问题?我什至不能将它们重命名为以后删除 8,因为 rename() 也失败了......
有任何想法吗 ??
编辑我
我忘了提到它是用于 wordpress 插件的 - 但我认为它没有区别......
编辑二
如果有人想尝试但没有正确的键盘/语言设置,我会在这里发布一些语言。我不确定剪切和粘贴是否会给出正确的编码,但总是可以尝试......
- עברית(希伯来语)
- 中国的(繁体中文)
- عربي (阿拉伯语)
- кириллица(西里尔文)
- ελληνικά(希腊语)
- öäüìíáàóò´Ä´`(德语-意大利语-西班牙语和其他欧洲语言)