0

我有一些 PHP 代码,当我使用 chdir 处理希伯来文文件名时出现错误:

function GetSubFoldersArray()
{
    $subFoldersArr = array();

    $yourStartingPath = "images";
    $iterator         = new RecursiveIteratorIterator(
        new RecursiveDirectoryIterator($yourStartingPath),
        RecursiveIteratorIterator::SELF_FIRST);

    foreach ($iterator as $file) {
        if ($file->isDir()) {
            $path = strtoupper($file->getRealpath());

            $path2 = PHP_EOL;

            $path3 = $path . $path2;

            $result = end(explode('/', $path3));

            array_push($subFoldersArr, $result);
        }
    }

    return $subFoldersArr;
}


$subFolders = GetSubFoldersArray();
// $response["images_arr"] = array();
$arrlength = count($subFolders);
chdir("images");

for ($x = 0; $x < $arrlength; $x++) {
    echo $subFolders[$x];
    echo "<br>";
    echo getcwd();
    echo "<br>";
    chdir($subFolders[$x]);
}

子文件夹../images/中包含希伯来语字符。

我能够提取子文件夹的希伯来文文件名并将它们全部放在一个数组中。当我遍历数组时,我正在尝试使用该chdir()函数设置子文件夹名称,但它失败了:

Warning: chdir() [function.chdir]: No such file or directory (errno 2) in 
/home/a2056935/public_html/android_connect/loopingDir.php on line 44.

奇怪的是,当我手动输入子文件夹名称时:

chdir("מקום2") 

然后它工作正常。但是当我尝试通过上一个。创建子文件夹数组,它失败了。

4

1 回答 1

1

错误在这两行:

$path2 = PHP_EOL;
$path3 = $path . $path2;

在 Windows 上,PHP 预定义常量PHP_EOL的值为\r\n。在 MAC 上是这样\r,在 Linux 上也是\n

该数组不包含子文件夹的名称,而是后跟 EOL 字符的名称。因此 chdir 失败。

于 2013-08-17T11:12:02.400 回答