当给定带有PHP\u EOL的路径时,chdir()函数失败
我有一些PHP代码,当我使用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),
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;