目标是让一个包含每个文件的文件数组在它自己的行上。执行的ssh命令如下:
ls
给我一个字符串。我尝试使用一个或多个空格进行正则表达式分割,但是它打破了包含空格的文件,我不希望这样。
上述命令返回的字符串如下:
29.jpg 30.jpg 31.jpg 38.jpg 38_1.jpg 39.jpg 39_1.jpg 40.jpg 40_1.jpg 4193FC36BA6-E284-45FB-B740-E5C7CAE3C72C Banner jr and sr2.jpg Banner jr and sr2_1.jpg ImSy00005582.CR2 ImSy00005582_1.CR2 ImSy00005587.jpg
而我正在寻找的是一种防弹方式,让每个文件/目录/在阵列中拥有它自己的行。
不幸的是, $files = preg_split('/\s+/', $file_string);
没有给出我正在寻找的东西。
如果有必要,我可以更改上面的PHP代码和ls命令,但我需要有关如何做到的建议。
答案 0 :(得分:0)
如果我理解正确,你从linux ls
获取此字符串,并希望将其转换为数组,对吧?
你可以这样做:
$str = "29.jpg 30.jpg 31.jpg 38.jpg 38_1.jpg 39.jpg 39_1.jpg";
$arr = explode(' ', $str);
但在我看来,你不应该那样使用它。我在谈论ls
。
如果文件存储在您的服务器中,您可以执行以下操作:
function FullListing($path) {
$path = $path . ($path[strlen($path) - 1] == '/' ? '' : '/');
$dh = @opendir($path);
$arr = array();
while ($ent = @readdir($dh)) {
if ($ent !== '.') {
$filePath = realpath($path . $ent);
$tmp = array('name' => $ent, 'type' => filetype($filePath), 'path' => $filePath, 'size' => ToKB(filesize($filePath)));
array_push($arr, $tmp);
}
}
return $arr;
}
此函数将返回一个数组数组,其中包含文件名,文件路径,文件类型和大小。删除你不需要的东西,在这里你去!