2012-04-12 12 views
3

Die folgenden Funktionen funktionieren nicht, wenn Speicherplatz im Verzeichnispfad vorhanden ist. Im folgenden Pfad heißt Verzeichnis beispielsweise 'Stack Overflow_files', das ein Leerzeichen enthält.scandir oder opendir funktioniert nicht, wenn Pfad Leerzeichen in PHP enthält

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

oder

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

ich die Lösung aus dem Terminal finden ls '$ dir' läuft. aber gibt es irgendeinen weg in php, um das directory listing zu bekommen?

+1

Es funktioniert für mich mit Leerzeichen im Namen. Sind Sie sicher, dass es kein anderes Problem gibt? – diolemo

+0

Ich weiß es nicht. Sind Sie sicher, dass es in Linux-Regierung funktioniert? Der Platz gibt sogar ein falsches Ergebnis, wenn ich Terminal-Befehl von PHP aus führe. wie exec ("du-hs $ pfad"); – mamun

+0

Der Platz ist wichtig für Shell-Befehle, aber nicht für PHP-Dateisystemfunktionen. – diolemo

Antwort

0

versuchen, den Raum mit einem backslash-

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

Try urlencoding entkommen. Der Verzeichnispfad Kann sein, wie

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

nach Urlencoding sieht es aus wie% 2Fhome% 2Fmamun% 2Fworkspace% 2Fbarj% 2Fbarj% 2Fbarj% 2Fequenz% 2FStack + Overflow_files. trotzdem funktioniert es nicht. – mamun

+0

versuchen Sie str_replace ("", "% 20", "/ home/mamun/Arbeitsbereich/Barj/barj/barj/Sequenz/Stack Overflow_files"); – Nauphal

+0

funktioniert immer noch nicht. Sogar Platz macht ein Problem, wenn ich die Größe eines Ordners durch Ausführen von exec() von PHP eines Shell-Befehls bekomme. zum Beispiel $ command = "du -hs '". $ Ordnerpfad. "'"; exec ($ command) gibt die falsche Ordnergröße an. – mamun

0

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

Versuchen Bro dies ist die endgültige Lösung

$ path = "/ var/www/images";
$ dir = "Ordner mit Leerzeichen";
$ files = scandir ("$ {Pfad}/$ {dir}");

Und Bingo

-1

Alternative Lösung

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

<br> 

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

Während dieses Code-Snippet die Frage lösen kann, [hilft eine Erklärung] (http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) wirklich, um die Qualität Ihres Beitrags zu verbessern. Denken Sie daran, dass Sie die Frage für Leser in der Zukunft beantworten, und diese Leute könnten die Gründe für Ihren Codevorschlag nicht kennen. – andreas