2012-04-12 46 views
3

當目錄路徑中存在空格時,以下功能不起作用。例如,在以下路徑中,目錄名稱是'Stack Overflow_files',其中包含一個空格。當路徑包含PHP中的空間時,scandir或opendir不起作用

$dir = '/home/mamun/workspace/barj/barj/barj/Sequence/Stack Overflow_files'; 
$scanned_directory = array_diff(scandir($dir, 0), array('..', '.')) 

$dh = opendir($dir); 
while (false !== ($filename = readdir($dh))) { 
     $scanned_directory[] = $filename; 
} 

我可以找到從運行LS '$目錄'的終端解決方案。但有沒有辦法在PHP中獲取dirctory列表?

+1

它爲我用的名字空間。你確定沒有其他問題嗎? – diolemo 2012-04-12 08:57:40

+0

我不知道。你確定它在linux的政府工作。當我運行PHP的終端命令時,空間甚至給出了錯誤的結果。像exec(「du -hs $ path」); – mamun 2012-04-15 06:57:54

+0

該空間對於shell命令而言非常重要,但對於PHP文件系統功能來說並不重要。 – diolemo 2012-04-15 17:19:28

回答

0

嘗試用backslash-

$dir = '/home/mamun/workspace/barj/barj/barj/Sequence/Stack\ Overflow_files'; 
0

嘗試URL編碼逃避的空間。該目錄路徑 可能像

  $dir = '/home/mamun/workspace/barj/barj/barj/Sequence/Stack%20Overflow_files'; 
+0

urlencoding後,它看起來像%2Fhome%2Fmamun%2Fworkspace%2Fbarj%2Fbarj%2Fbarj%2FSequence%2FStack + Overflow_files。仍然不起作用。 – mamun 2012-04-12 12:16:08

+0

嘗試 str_replace(「」,「%20」,「/ home/mamun/workspace/barj/barj/barj/Sequence/Stack Overflow_files」); – Nauphal 2012-04-12 13:30:29

+0

仍然無法使用。即使空間也會造成問題,當我從運行shell命令的php的exec()獲取文件夾的大小時。例如,$ command =「du -hs'」。 $ FOLDERPATH 「'」。 exec($命令)會給出錯誤的文件夾大小。 – mamun 2012-04-13 10:59:26

0

嘗試

$dir = urlencode('/home/mamun/workspace/barj/barj/barj/Sequence/Stack Overflow_files'); 
0

兄弟,這是最終的解決方案

$ PATH = 「/無功/網絡/圖片」;
$ dir =「帶空格的文件夾」;
$ files = scandir(「$ {path}/$ {dir}」);

和賓果

-1

替代解決方案

$URL = str_replace("\ ","%20","../pasta1/pasta com espaco/pasta2");<br> 
$arquivos = scandir($URL); 

<br> 

echo $arquiovos[0];<br> 
echo $arquiovos[1];<br> 
+0

儘管此代碼片段可能會解決此問題,但[包括解釋](http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)確實有助於提高帖子的質量。請記住,您將來會爲讀者回答問題,而這些人可能不知道您的代碼建議的原因。 – andreas 2016-10-19 19:07:05

相關問題