PHPの質問です

以下のプログラムを実行したらファイル名が表示されるのですが
表示されるファイル名がランダムで表示されてしまいます
名前順にソートして表示するにはどこをどう改造すればいいのでしょうか?
よろしくお願いします

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2013/11/14 21:18:51
  • 終了:2013/11/14 21:46:14
id:takanii
<?php
    $dir = './hoge/';
    $dh = opendir($dir);
    $fnArray = array();
    while(false !== ($fn = readdir($dh))){
        if($fn !== '.' && $fn !== '..' && !is_dir($dir.$fn)){
            array_push($fnArray, $fn);
        }
    }
    closedir($dh);
    $s = preg_replace('/(\S+).php/', '<tr><td><a href="http://hoge/$1.php">$1</a></td></tr>', join($fnArray, "\n"));
echo "$s";
?>

ベストアンサー

id:a-kuma3 No.1

a-kuma3回答回数4545ベストアンサー獲得回数18952013/11/14 21:26:56

ポイント300pt

ファイル名を取得し終わった後に、sort() で並び替えます。

<?php
    $dir = './hoge/';
    $dh = opendir($dir);
    $fnArray = array();
    while(false !== ($fn = readdir($dh))){
        if($fn !== '.' && $fn !== '..' && !is_dir($dir.$fn)){
            array_push($fnArray, $fn);
        }
    }
    closedir($dh);

    // ★並べ替え
    sort($fnArray);

    $s = preg_replace('/(\S+).php/', '<tr><td><a href="http://hoge/$1.php">$1</a></td></tr>', join($fnArray, "\n"));

    echo "$s";
?>

sort のマニュアルの URL です。
http://us1.php.net/manual/ja/function.sort.php

その他の回答(0件)

id:a-kuma3 No.1

a-kuma3回答回数4545ベストアンサー獲得回数18952013/11/14 21:26:56ここでベストアンサー

ポイント300pt

ファイル名を取得し終わった後に、sort() で並び替えます。

<?php
    $dir = './hoge/';
    $dh = opendir($dir);
    $fnArray = array();
    while(false !== ($fn = readdir($dh))){
        if($fn !== '.' && $fn !== '..' && !is_dir($dir.$fn)){
            array_push($fnArray, $fn);
        }
    }
    closedir($dh);

    // ★並べ替え
    sort($fnArray);

    $s = preg_replace('/(\S+).php/', '<tr><td><a href="http://hoge/$1.php">$1</a></td></tr>', join($fnArray, "\n"));

    echo "$s";
?>

sort のマニュアルの URL です。
http://us1.php.net/manual/ja/function.sort.php

  • id:windofjuly
    うぃんど 2013/11/14 22:07:59
    終わるの早いですね…。

    <?php
    $dir = './hoge';
    echo '<table>';
    if ( $fnArray = scandir( $dir ) ) {
    foreach( $fnArray as $fn ) {
    if ( preg_match( '/(\S+).php/', $fn, $m ) ) echo '<tr><td><a href="http://hoge/' . $m[1] . '.php">' . $m[1] . '</a></td></tr>';
    }
    }
    echo '</table>';
  • id:tobeoscontinue
    ファイルの一覧を入手する場合はglobが便利です。
    foreach(glob('hoge/*.php') as $f) {
    echo "<tr><td><a href=\"http://$f\">".basename($f, '.php')."</a></td></tr>\n";
    }
    $fはパスなのでbasenameでファイル名だけを取り出し更に'.php'でサフィックスも削除します。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません