1

1)我怎样才能使这个只读“.txt”文件

2)我怎样才能让它只显示文件名,所以我可以按照我的喜好设计它..(<h1>$file</h1>例如)

$dir = "includes/news";
$dh = opendir($dir);
while (false !== ($filename = readdir($dh)))
{
    if ($filename != "." && $filename != ".." && strtolower(substr($filename, strrpos($filename, '.') + 1)) == 'txt')
    {
    $files[] = $filename;
    }
}
sort($files);
echo $files;

它现在显示的是:

数组( [0] => . [1] => .. [2] => [23.7] Hey.txt [3] => [24.7] New Website.txt [4] => [25.7] Example.txt)

现在,这是我可以做到的另一种方式,我更喜欢它:

        if( $handle = opendir( 'includes/news' )) 
    {
        while( $file = readdir( $handle )) 
        {
            if( strstr( $file, "txt" ) )
            {
                $addr = strtr($file, array('.txt' => ''));
                echo '<h1><a href="?module=news&read=' . $addr . '">&raquo; ' . $addr . "</a></h1>";
            }
         }
        closedir($handle);
    }

但我对此的问题是文件之间没有排序。输出一切正常,只是它们的顺序。所以如果你们中的一个人能弄清楚如何正确地对它们进行排序,那将是完美的

4

3 回答 3

0

好的,试试这个:

$files = array();
if($handle = opendir( 'includes/news' )) {
    while( $file = readdir( $handle )) {
        if ($file != '.' && $file != '..') {
            // let's check for txt extension
            $extension = substr($file, -3);
            // filename without '.txt'
            $filename = substr($file, 0, -4);
            if ($extension == 'txt')
                $files[] = $file; // or $filename
        }
    }
    closedir($handle);
}
sort($files);
foreach ($files as $file)
    echo '<h1><a href="?module=news&read=' . $file 
        . '">&raquo; ' . $file . "</a></h1>";
于 2013-07-25T18:14:27.237 回答
0

我认为这应该完成你想做的事情。它使用explode 和负限制仅查找.txt 文件并仅返回名称。

$dir = "includes/news";
$dh = opendir($dir);
while (false !== ($filename = readdir($dh))){

    $fileName = explode('.txt', $node, -1)[0];
    if(count($fileName) )
        $files[] = '<h1>'.$fileName.'</h1>';

}
于 2013-07-25T18:05:28.787 回答
0

试着让它尽可能简单试试这个

function check_txt($file){
 $array = explode(".","$file");
 if(count($array)!=1 && $array[count($array)-1]=="txt"){return true;}
 return false;
  }
if($handle = opendir( 'includes/news' )) {
 while( $file = readdir( $handle )) 
    {
        if( check_txt($file) )
        {
            echo '<h1><a href="?module=news&read=' . $file . '">&raquo; ' . $file . "</a></h1>";
        }
     }
    closedir($handle);
}
于 2013-07-25T20:03:08.170 回答