2013-08-05 24 views
0

目標是讓文件數組包含其自己的行上的每個文件。執行的ssh命令如下:ssh,以PHP-regex友好的方式顯示文件

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

如果我理解它是正確的,你從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; 
} 

這個函數會返回一個數組的數組,包含文件名,文件路徑,文件類型和大小。刪除你不需要的東西,然後去!

相關問題