当给定带有PHP\u EOL的路径时,chdir()函数失败

当给定带有PHP\u EOL的路径时,chdir()函数失败,php,eol,chdir,Php,Eol,Chdir,我有一些PHP代码,当我使用chdir处理希伯来文文件名时,我遇到了一个错误: function GetSubFoldersArray() { $subFoldersArr = array(); $yourStartingPath = "images"; $iterator = new RecursiveIteratorIterator( new RecursiveDirectoryIterator($yourStartingPath),

我有一些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]);
}
奇怪的是,当我手动输入子文件夹名称时:

chdir("מקום2") 

那么它工作得很好。但是当我试着通过上一个。创建子文件夹数组时失败。

错误出现在以下两行:

$path2 = PHP_EOL;
$path3 = $path . $path2;
在windows上,PHP预定义常量
PHP\u EOL
的值为
\r\n
。在MAC上是
\r
,在Linux上是
\n


数组不包含子文件夹的名称,但名称后面跟一个EOL字符。因此chdir失败了

作为一名以色列程序员,我从未发现有必要用希伯来语命名我的文件。我很想知道你为什么这么做。你用什么编辑器来编写带有希伯来语字符(仍然是ASCII btw)的命令?例如,在记事本++中,您必须确保使用UTF-8编码感谢您的及时回复,我使用的是定义了UTF8的记事本+。需要希伯来语子文件夹名称是因为每个文件夹代表一个地名,可以是希伯来语/英语或任何其他语言。每个文件夹都包含某个地方的照片。你在列表中说“它失败了”,怎么说?您只是在检查回显子文件夹的列表吗?
$path2 = PHP_EOL;
$path3 = $path . $path2;