• 締切済み

PHPでディレクトリのファイルをソート表示させる

こちらのサイトを参考にして、PHPでディレクトリのファイルを表示させる プログラムを作りました。→ http://php.eweb-design.com/0206_di.php --------------------------------------------- <?php $rep = 1; // 最終更新日(表示=1 非表示=0) $sze = 1; // ファイルサイズ(表示=1 非表示=0) $lst = "./list"; // 表示するリストの名前(パス) $drc=dir($lst); print("<OL>"); while($fl=$drc->read()) { $lfl = $lst."/".$fl; $din = pathinfo($lfl); if(is_dir($lfl) && ($fl!=".." && $fl!=".")){ print("<LI>".$din["basename"]."<FONT size='-1'> (ディレクトリ)</FONT></LI>"); } else if($fl!=".." && $fl!=".") { print("<LI>"); print("<a href=".$lst."/".$fl.">".$fl."</a>"); // ファイル更新日 if($rep == 1 || $sze == 1) print("<FONT size='-1'> ("); if($rep == 1) echo date("m/d",filemtime($lfl)); if($rep == 1 && $sze == 1) print(", "); // ファイルサイズ if($sze == 1) echo round(filesize($lfl)/1024)."KB"; if($rep == 1 || $sze == 1) print(")</FONT> "); print("</LI>"); } } print("</OL>"); $drc->close(); ?> --------------------------------------------- しかし、ファイルがソートされていません。 どの様にしたらファイル名でソートして表示できるのでしょうか? 申し訳ありませんが、ご教示お願いします。

みんなの回答

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

「ファイル名でソートする」という手順を加える.

sa-roin
質問者

補足

ご回答ありがとうございます。 このプログラムがどのような事をしているのか 理解できていませんので、大変申し訳ありませんが、 具体的にどうしたら良いのか教えて頂けませんか?

関連するQ&A

  • PHPでディレクトリーとそのサブディレクトリー表示

    PHPでディレクトリーとそのサブディレクトリーの中のファイルを表示して、ファイルであればダウンロード用のリンクを付け加えたいと思いますが、ここで嵌ってしまっています。 以下はソースコード(コメントアウトされている部分は試したコード、すべてだめだった) $dir = $_SERVER['DOCUMENT_ROOT'].'/projects/website/uploaded'.'/'.$_GET['user']; function getDirContents($dir) { global $basedir; $path=pathinfo($dir); $path1=$basedir.'/'.basename($dir); //echo $path1; //$path1=basename($dir); if (is_dir($dir)) { //$path1 .= basename($dir); //$path1 .='/'.basename($dir); $dirs = explode('/', $dir); $last_dir = $dirs[count($dirs) - 1]; echo '<strong>'.$last_dir.'</strong>'; if ($dh = opendir($dir)) { echo '<ul>'; while (($file = readdir($dh)) !== false) { if ($file == '.' || $file == '..' || substr($file,0,1)=='.') {} else { echo '<li>'; if (is_dir($dir.'/'.$file)) { $path1 .='/'.basename($file); getDirContents($dir.'/'.$file); } else { //echo $path1; $path2=pathinfo($path1); echo '<a href="'.$basedir.$path1.'/'.$file.'">'.$file.'</a>'; } echo '</li>'; } } echo '</ul>'; closedir($dh); } } return false; } getDirContents($dir); 因みにウェブサイトは、サーバーの/projects/website/にあります。表示したいフォルダはprojects/website/uploaded/にあります。そしてサブフォルだは/projects/website/uploaded/(ユーザ名)/(フォーム番号)/ わかる方がいらっしゃいましたら、ご回答を宜しくお願いいたします。

    • ベストアンサー
    • PHP
  • PHPでディレクトリ名のみ表示する方法が知りたいです。以下のプログラム

    PHPでディレクトリ名のみ表示する方法が知りたいです。以下のプログラムで「test」というディレクトリ内のファイル一覧(ディレクトリ名とファイル名)を表示するようにしているのですが、この中からディレクトリ名のみ表示させたいのですがどのようにすればいいのでしょうか? よろしくお願いします。 <?php if ($dir = opendir("test/")) { while (($file = readdir($dir)) !== false) { if ($file != "." && $file != "..") { echo "$file<br>\n"; } } closedir($dir); } ?>

    • ベストアンサー
    • PHP
  • ファイル一覧表示で、ディレクトリを非表示

    ディレクトリ内の画像ファイルの一覧を表示させたいです。 検索したところ、以下の物を発見しました。 #!/usr/bin/perl $filename=$ENV{QUERY_STRING}; $lookdir = "../../image/event/"; $mime{html}="text/html"; $mime{htm}="text/html"; $mime{txt}="text/plain"; $mime{jpg}="image/jpeg"; if($filename eq '') { print "Content-type: text/html\n\n"; print "<html><body>\n"; opendir(DIR,"../../image/event/"); while($dir=readdir(DIR)) { print "<a href=\"$lookdir$dir\">$dir</a><br>\n"; } closedir(DIR); print "</body></html>\n"; } else { $ext=$filename; $ext=~s/.*\.//g; if($mime{$ext} ne '') { print "Content-type: $mime{$ext}\n\n"; open(R,$filename); print <R>; close(R); } } これで、ほぼOKなのですが、"."や".."が表示されてしまってます。 これを消したいのですが、良い方法は無いでしょうか?

    • ベストアンサー
    • Perl
  • ファイル一覧のうち、特定のファイルを表示させないには?

    あるファイルをアップできる掲示板は、1つのフォルダの中にファイルをアップしていくのですが、そのフォルダの中のアップロードされたファイルの一覧を、HTMLページにテーブルとして表示(さらにそのファイルへのリンクも)しています。 「.htaccess」ファイルをそのフォルダに入れたら、それもアップロードされたファイルの一覧の中に加わって表示されてしまっています。 リンクをクリックしてもファイルの内容は表示されませんが、できれば最初からこれを一覧の中に表示させたくないです。 どこかに「ファイル名が『.htaccess』だったら表示しない」という1行を加えればすむのだろうと思いますが、どう書いて良いのかわかりません。 その部分のソースは以下なのですが、お詳しい方、お力をお貸しください! (ちなみにデザインはhtmlスキンファイルで設定するもののため、そのような記述が入っております) opendir(DIR,"$self->{'html_dir'}/$self->{'bbsname'}/$self->{'upload_dir'}") || main::errormsg("27",""); while ($_ = readdir DIR){    next if $_ eq "." || $_ eq "..";    $skin{"file"} = "<a href=\"$self->{'html_url'}/$self->{'bbsname'}/$self->{'upload_dir'}/$_\"><font color=\"#0000CC\">$_</font></a>";    $skin{"size"} = -s "$self->{'html_dir'}/$self->{'bbsname'}/$self->{'upload_dir'}/$_";    my @f = split "-",$_,2;    $skin{"no"} = "";    $skin{"no"} = "<a href=\"$self->{'html_url'}/$self->{'bbsname'}/$f[0].html\"><font color=\"#0000CC\">$f[0].html</font></a>" if -f "$self->{'html_dir'}/$self->{'bbsname'}/$f[0].html";    print $skin->replace("main",\%skin); } closedir DIR;

    • ベストアンサー
    • CGI
  • PHPについての質問です。

    _PHPで、 「もし、変数$testが『1』なら、"<li><a href="$test_url">テスト</a></li>"を表示させなさい。」 というのを記述したいのですが、 どうやればよいでしょうか、 <?php if ($test=1) { echo "<li><a href="print ($test_url)";\">テスト</a></li>" } ?> というのをやってみたのですが、エラーで終わりました。 どうすればよいでしょうか?よろしくお願いします。

    • ベストアンサー
    • PHP
  • phpでファイルが削除できない

    こんにちは。 ファイル名の書かれたdir.txtを開いて、その中から1日以上経過したファイルを削除するtime.phpを作成しようと思っています。 実行してみると、24時間経過したファイルがあっても 「Warning: unlink() [function.unlink]: Permission denied in C:\Program Files\xampp\htdocs\test\time.php on line 33」 というエラーがでて削除できない 実行結果にprintするように指定していない$imaの数値「1128673152」が表示される。 のですが、どこに間違いがあるのでしょうか? time.phpの内容 ---------------------------------------------------------------------- <html> <body> <?php // ファイルを読み込み専用でオープンする $fp = fopen('dir.txt', 'r'); // 終端に達するまでループ while (!feof($fp)) { // ファイルから一行読み込む $line = fgets($fp); $line = rtrim($line); // ファイルの更新時間を調べる $kousin = filemtime("$line"); // 今の時刻 $ima = time(); // 経過時間を計算する $keika = $ima - $kousin; // 出力する print $line; print "<br>\n"; print $ima; print "<br>\n"; print $kousin; print "<br>\n"; print $keika; print "<br>\n"; clearstatcache(); if ( $keika > 86400 ) { unlink( "$file" ); } } // ファイルをクローズする fclose($fp); ?> </body> </html> ----------------------------------------------------------------------

    • ベストアンサー
    • PHP
  • php ファイルのアップロード

    ファイルを updir のフォルダにアップロードしたいのですが 上手くいきません。 「ファイルアップロード失敗」 が表示されます。 ファイル名はそのままでアップしたいと思っています。 <tr> <td align="right">PDF:</td> <td> <input type=file name="update_p_pdf" size="50"> </td> </tr> ↑上のはちゃんと動いていると思います。 ↓下のがどうしても「ファイルアップロード失敗」になります。 ファイルの名前を変更しようとは思っていません。 とりあえず updir のフォルダにファイルを入れたいです。 //PDF入力 <? $uploadfile = "./updir/".$addres.".pdf"; print "<pre>"; if(move_uploaded_file($_FILES['update_p_pdf']['tmp_name'], $uploadfile)) { ?> <font color="blue">ファイルアップロード成功</font> <?php } else { ?> <font color="red">ファイルアップロード失敗</font> <?php } ?> //PDF 元のデータです。 http://proxy.f2.ymdb.yahoofs.jp/bc/269445e1/bc/5c56/admin.php?bcPbuTGBxi28K6X1

    • 締切済み
    • PHP
  • CSVファイルの検索結果表示について

    CSVファイルを検索して検索結果を表示したいのですが、 検索結果を表示できません。 トップページ <form action="search.php" method="get"><input type="text" name="key" size="90"> <input type="submit" name="submit" value="検索"></form> 検索結果を表示するページ <?php $ArrKeywordLength = sizeof($ArrKeyword); $fp = fopen('data.csv', "r"); $Result=array(); while(!feof($fp)){ $ret = fgets($fp, 4096); $lines = strip_tags($ret); $Match=true; for($n=0; $n<$ArrKeywordLength;$n++){ if(!strpos($ArrKeyword[$n], $lines)){ $Match = false; break; } } if($Match === true){ $Result[] = $ret; } } ?> <?php $n=sizeof($Result); if($n==0){ print"見つかりませんでした"; }else{ print"{$n}件見つかりました"; ?> <ul> <?php for($i=0;$i<10;$i++){ $line=explode(",",$Result[$i]); ?> <li><a href="item.php?id=<?=$line[0]?>"><?=$line[1]?></a></li> <?php } } ?> </ul> 上記のプログラムを実行すると、以下のようになってしまいます。 ○件見つかりました ・ ・ ・ ・ ・ 私のやりたいことは、以下のようなCSVファイルがあったら ----------------------------------------------------- CSVファイル 1,あいうえお 2,かきくけこ 3,さしすせそ 4,たちつてと 5,なにぬねの ----------------------------------------------------- <li><a href="item.php?id=1">あいうえお</a></li> <li><a href="item.php?id=2">かきくけこ</a></li> <li><a href="item.php?id=3">さしすせそ</a></li> <li><a href="item.php?id=4">たちつてと</a></li> <li><a href="item.php?id=5">なにぬねの</a></li> のように出力したいのですが、 どのように改良すればよいのでしょうか? わかってる方からすれば笑われるようなことかもしれませんが、 PHP初心者なので、本を読みながらいろいろ試してみても、 全然うまくいかないので、どなたか教えてください。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • PHPファイルを.html拡張子で動かす.htaccessの設定法

    以下のURL: http://www.seanewsonline.com/dir1999/page22.htm の「シンガポール情報文化省認証 MISC GuestBook」行の「MISC」部分のスクリプト『<FONT STYLE="font-size:6.66mm" COLOR="#666600" SIZE="5"><B><A HREF="http://www.seanewsonline.com/misc/index.htm">MISC</A></B></FONT>』を取り出し『misc.php』と言うファイルを作り、アップロードしました。 その後で上記URLのページの『<FONT STYLE="font-size:6.66mm" COLOR="#666600" SIZE="5"><B><A HREF="http://www.seanewsonline.com/misc/index.htm">MISC</A></B></FONT>』部分を『<?php include'misc.php' ;?>』に置き換え、ファイル名を『page00.htm』及び『page00.php』として両方ともアップロードしました。 さらに『AddHandler application/x-httpd-php .html』と言うスクリプトを「.htaccess」ファイルにし、同じ場所にアップロードしました。 その結果、『page00.htm』の方は以下のURLのように「シンガポール情報文化省認証 MISC GuestBook」行の『MISC』部分が欠落して表示されました。 http://www.seanewsonline.com/dir1999/page00.htm しかし『page00.php』の方は以下のURLのように「<?php include'misc.php' ;?> 」が機能し、『MISC』部分が欠落することなく表示されました。 http://www.seanewsonline.com/dir1999/page00.php 質問:『page00.htm』の方も「<?php include'misc.php' ;?>」機能させるにはどうしたら良いでしょうか。

    • ベストアンサー
    • PHP
  • perl ディレクトリ ツリー表示

    下記ソースコードでカレントディレクトリのツリー表示ができますが、これを特定のディレクトリ内をツリー表示できるようにする方法がわかりません。 opendir関数の$dirの前にtestをつけましたが、うまく行きません。 特定のディレクトリは任意で変えることができることとします。 sub treelist_ { my ($dir, $lv) = @_; opendir my $dh, $dir; my @files = grep { $_ !~ /^\.\.?$/; } readdir $dh; closedir $dh; for my $file (@files) { print ">" x $lv, "$dir/$file\n"; treelist_("$dir/$file", $lv+1) if -d "$dir/$file"; } } sub tree { for my $dir (@_) { print "$dir\n"; treelist_($dir, 0); } } tree('.');

専門家に質問してみよう