基于目录的链接列表,没有文件扩展名和php中的连字符

时间:2014-03-03 03:14:03

标签: php

我使用以下脚本将特定目录中的文件列为超链接列表。

$dir = '.';
$dh = opendir($dir);
$file_count = 0;
  while (false !== ($file = readdir($dh))) {
        $files[] = $file;
        $file_count += 1;
        echo $file;
    }
  for ($x = 0; $x < $file_count; $x += 1) {
        echo "<li><a href='$files[$x]'>$files[$x]</a></li>";
    }

请告诉我们以下是否可行

1。不应显示文件扩展名

2. 我需要“”而不是文件名中的“ - ”

如果可能的话,如何加入它。

更新2: 谢谢你的帮助。我跟着, 不得显示我提到的文件名(如不显示index.php),如何更改此代码?

<?php
$directory = '';
foreach (glob($directory . "*.php") as $file) {
   $parts = pathinfo($file);
   $name = preg_replace("/-/", " ", $parts['filename']);
   echo "<li><a href=\"{$file}\">{$name}</a></li>";
}
?>

1 个答案:

答案 0 :(得分:1)

在循环中使用glob尝试以下内容。

$directory = 'folder/';
foreach (glob($directory . "*.*") as $file) {
   $parts = pathinfo($file);
   $name = preg_replace("/-/", "", $parts['filename']);
   echo "<a href=\"{$file}\">{$name}</a>";
}

使用您提供的代码示例,两行添加了pathinfo和一个preg_replace。

$dir = '.';
$dh = opendir($dir);
$file_count = 0;
while (false !== ($file = readdir($dh))) {
    $files[] = $file;
    $file_count += 1;
    echo $file;
}
for ($x = 0; $x < $file_count; $x += 1) {
    $parts = pathinfo($files[$x]);
    $name = preg_replace("/-/", "", $parts['filename']);
    echo "<li><a href='$files[$x]'>$name</a></li>";
}

更新: 以下内容未显示名为index.php,wtf.php和hide.php

的文件
$directory = 'folder/';
$blacklist = array(
   'index',
   'wtf',
   'hide'
);

foreach (glob($directory . "*.php") as $file) {
   $parts = pathinfo($file);
   if (!in_array($parts['filename'], $blacklist)) {
      $name = preg_replace("/-/", "", $parts['filename']);
      echo "<li><a href=\"{$file}\">{$name}</a></li>";
   }
}