我使用以下脚本将特定目录中的文件列为超链接列表。
$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>";
}
?>
答案 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>";
}
}