- ベストアンサー
フォルダ内のファイル名取得の仕方が分かりません
Apache2.0.47、PHP4.3.2で使用しています。 フォルダ内のファイル名の取得を以下のように書いています。 (scandirは使えませんでした) <?php $dir = "test_dir"; $dh = opendir($dir); while (false !== ($filename = readdir($dh))) { $files[] = $filename; } sort($files); print_r($files); ?> "."と".."も取得されるので、以下のように変更したのですが同じ結果でした。 <?php $dir = "test_dir"; $dh = opendir($dir); while (false !== ($filename = readdir($dh))) { if(filename!=". "){ if(filename!=".. "){ $file[] = $filename; } } } sort($files); print_r($files); ?> "."と".."をはぶいたファイル名だけを取得したい場合にはどうすればよいのでしょうか? よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
ちゃんと動作してファイル名を取得できているとして、 質問の回答としては以下のようにするとできます。 while (false !== ($filename = readdir($dh))) { if(!is_dir($filename)){ $file[] = $filename; } }
その他の回答 (2)
- lesbrers
- ベストアンサー率48% (23/47)
余計な空白が入っています。 ". "、".. " ~ ~ あと修正すべきは、変数に$を付けるのと、変数名の間違いですね。
お礼
回答ありがとうございました。 お礼が遅くなりすいません。 printで表示すると空白も表示されるので必要なものと思っていました。 変数の$はうっかりしていました。 変数の間違いというのは何か分かりませんでした。 とりあえず動くようになりました。 ありがとうございました。
- gentaro
- ベストアンサー率47% (105/221)
このソース、エラーになりませんか?(^^; 正解を書くとスキルアップにならないと思いますのでヒントを 1)PHPの配列をもう少し勉強 2)変数名には先頭に$が必要(これはプロでも時たまやらかしますね) などです。頑張りましょう
お礼
回答ありがとうございました。 お礼が遅くなりすいません。 配列の確認をしました。知識不足でした。 変数名の$、うっかりしてました。 改めてソースを見直して不具合に気づいたのですが、不思議とエラーにはなってなかったです。 (こういうのが、かえって嫌な不具合です) ありがとうございました。
お礼
回答ありがとうございました。 お礼が遅くなりすいません。 $filename==".."ではなく、!is_dir($filename)を使えば良かったのですね。 "."や".."が!is_dirで対処できることも分かりました。 ありがとうございました。