0

目标是有一个 files 数组,其中包含它自己的行中的每个文件。执行的 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 命令,但我需要有关如何做到这一点的建议。

4

1 回答 1

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

此函数将返回一个数组数组,其中包含文件名、文件路径、文件类型和大小。删除不需要的东西,然后就可以了!

于 2013-08-05T10:51:03.047 回答