ssh,以PHP-regex友好的方式显示文件

时间:2013-08-05 10:18:25

标签: php ssh

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

1 个答案:

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

此函数将返回一个数组数组,其中包含文件名,文件路径,文件类型和大小。删除你不需要的东西,在这里你去!