1

私はこのコードを持っています:

<?php
if ($handle = opendir('.')) {
while (false !== ($file = readdir($handle)))
{
    if ($file != "." && $file != ".." && strtolower(substr($file, strrpos($file, '.') + 1)) == 'html')
    {   

        $patterns = array();
        $patterns[0] = '/_/';
        $patterns[1] = '/.html/';
        $patterns[2] = '/index/';
        $replacements = array();
        $replacements[2] = ' ';
        $replacements[1] = '';
        $replacements[0] = 'Strona główna';
        $wynik = preg_replace($patterns, $replacements, $file);

        $newVariable = str_replace("_", " ", $file);  
        $thelist .= '<li><a href="'.$file.'">'.ucfirst($wynik).'</a></li>';
    }
}
closedir($handle);
}
?>
<P>List of files:</p>
<P><?=$thelist?></p>

ファイルのリストをアルファベット順に表示する方法はありますか? これで、スクリプトは、あるディレクトリ内の html ファイルを一覧表示します。読み取るディレクトリを手動で設定できるスクリプトを変更するにはどうすればよいですか?

//アルファベット順のコード:

<?php
if ($handle = opendir('.')) {
$files = glob("*");
foreach ($files as $file)    // replace `while` with `foreach`
{
if ($file != "." && $file != ".." && strtolower(substr($file, strrpos($file, '.') + 1)) == 'html')
    {   

        $patterns = array();
        $patterns[0] = '/_/';
        $patterns[1] = '/.html/';
        $patterns[2] = '/index/';
        $replacements = array();
        $replacements[2] = ' ';
        $replacements[1] = '';
        $replacements[0] = 'Strona główna';
        $wynik = preg_replace($patterns, $replacements, $file);

        $newVariable = str_replace("_", " ", $file);  
        $thelist .= '<li><a href="'.$file.'" target="_blank">'.ucfirst($wynik).'</a></li>';
    }

}

closedir($handle);
}
?>
4

4 に答える 4

1

glob()の代わりに使用できますopendir()。Glob は、そうしないように指示されない限り、ファイルをソートします。

$files = glob("*");
foreach ($files as $file)    // replace `while` with `foreach`
{
  // the rest of your code

}
于 2012-12-19T14:55:34.607 に答える
1

sort(...)を使用して配列をソートしてみてください。

于 2012-12-19T14:54:17.907 に答える
1

ファイル情報を配列に追加し、配列をソートしてから、フォーマットを含むループを使用して情報をエコーアウトします。

于 2012-12-19T14:57:38.770 に答える
0

使用できますSplHeap

foreach(new AlphabeticDir(__DIR__) as $file)
{
    //Play Some Ball
    echo $file->getPathName(),PHP_EOL;
}

クラス

class AlphabeticDir extends SplHeap
{
    public function __construct($path)
    {
        $files  = new FilesystemIterator($path, FilesystemIterator::SKIP_DOTS);
        foreach ($files as $file) {
            $this->insert($file);
        }
    }
    public function compare($b,$a)
    {
        return strcmp($a->getRealpath(), $b->getRealpath());
    }
}
于 2012-12-19T15:05:15.060 に答える