在PHP中删除带有非英语字符的目录

时间:2012-07-30 14:28:25

标签: php wordpress encode dir non-english

我有一个功能是在服务器上扫描目录,读取文件,用它做一些事情,然后删除目录(嵌套)

功能很长,所以我会发布相关部分。

//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);
}

效果很好。

问题是 - 当我检查非英语字符(德语,中文,希伯来语,阿拉伯语,西里尔语或其他任何字符)时 - 脚本失败并停止...

然后我尝试重命名(),rmdir()等 - 它们都失败了。 这是一个PHP错误吗? 我该如何解决这个问题?我甚至无法将它们重命名为以后删除8因为rename()也失败了......

任何想法?

编辑我

我忘了提到它是用于wordpress插件 - 但我认为它没有任何区别......

编辑II

如果有人想尝试但没有合适的键盘/语言设置,我会在这里发布一些语言。我不确定剪切和粘贴会给出正确的编码,但总是可以尝试...

  • עברית(希伯来语)
  • 中国的(中国传统)
  • عربي(arabic)
  • кириллица(西里尔文)
  • ελληνικά(希腊语)
  • öäüìíáàóò'Ä'`(德语 - 意大利语 - 西班牙语和其他欧洲语)

1 个答案:

答案 0 :(得分:0)

您是否尝试在扫描或删除目录之前设置区域设置。 http://www.php.net/manual/en/function.setlocale.php

我没试过,但你可以试一试。这可能有所帮助。

相关问题