2012-04-12 1 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 '이 (가) $ dir을'을 실행하는 터미널에서 해결책을 찾을 수 있습니다. 하지만 PHP에서 dirctory 목록을 얻는 방법은 무엇입니까? backslash-

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

이 이름 공간과 나를 위해 작동합니다. 다른 문제가 없다고 확신합니까? – diolemo

+0

잘 모르겠습니다. Linux envernment에서 작동하는지 확인하십시오. PHP에서 터미널 명령을 실행하면 공간이 잘못 표시됩니다. exec ("du -hs $ path")와 같이; – mamun

+0

공백은 쉘 명령에서는 중요하지만 PHP 파일 시스템 기능에서는 중요하지 않습니다. – diolemo

답변

0

시도.

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

해보십시오에는 urlencoding과 공간을 탈출

+0

을 urlencoding 한 후 % 2Fhome % 2Fmamun % 2Fworkspace % 2Fbarj % 2Fbarj % 2Fbarj % 2FSequence % 2FStack + Overflow_files처럼 보입니다. 여전히 작동하지 않습니다. – mamun

+0

시도 str_replace ("", "% 20", "/ home/mamun/workspace/barj/barj/barj/시퀀스/스택 오버플로 파일"); – Nauphal

+0

여전히 작동하지 않습니다. 짝수 공백은 쉘 명령의 PHP exec()를 실행하여 폴더의 크기를 얻을 때 문제가됩니다. 예를 들어, $ command = "du -hs '". $ folderpath. " '"; exec ($ command) 잘못된 폴더 크기를 제공합니다. – mamun

0

이이

$ 경로 = "은/var/www /에서 이미지"최종 솔루션입니다

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

브로 시도 같은 디렉토리 경로 일 수있다;
$ 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