【发布时间】:2018-03-26 14:03:01
【问题描述】:
我的服务器上有一个文件夹,可以接收每月发布的新闻稿文件。这些删除将自动发生,我被要求在 PHP 中编写一些内容以将文件列表显示为可下载链接,同时根据文件名更改显示名称。
我正在寻找的文件夹是“/var/newsletters”,我在根目录的 index.php 页面上包含代码。我到目前为止的代码是这样的:
<?php
$dir = "var/newsletters/";
// Open a directory, and read its contents
if (is_dir($dir)){
if ($dh = opendir($dir)){
while (($file = readdir($dh)) !== false){
echo "filename:" . $file . "<br>";
}
closedir($dh);
}
}
?>
这确实会显示文件列表,但这只是该过程的第一步。它们没有链接,也没有重命名。这些是每月通讯文件,名为 nmmyyyy.pdf(例如,九月将是 n092017.pdf)。我需要做的是将n092017.pdf转换为“2017年9月”,然后创建链接,这样目录中的n092017.pdf和n102017.pdf就变成了
<ul>
<li><a href="var/newsletters/n092017.pdf">September 2017</a></li>
<li><a href="var/newsletters/n102017.pdf">October 2017</a></li>
</ul>
我在这里查看了一些链接:How to list files and folder in a dir (PHP) 和List all files in one directory PHP,但发现我上面显示的代码效果最好。我需要帮助的是将列表显示为链接并转换名称。谢谢!
编辑: 我能够获得使用此代码的链接:
<?php
$dir = "var/newsletters/";
// Open a directory, and read its contents
if (is_dir($dir)){
if ($dh = opendir($dir)){
while (($file = readdir($dh)) !== false){
echo " <a href=var/newsletters/$file>Click here</a><br>";
closedir($dh);
}
}
?>
我现在正在更改文件名,但显示不正确。我目前正在使用它:
<?php
$dir = "var/newsletters/";
// Open a directory, and read its contents
if (is_dir($dir)){
if ($dh = opendir($dir)){
while (($file = readdir($dh)) !== false){
echo "<a href=var/newsletters/$file>
function getDateFromFileName($filename){
$dateObj = DateTime::createFromFormat('m-
Y',substr($filename,1,2).'-'.substr($filename,3,6));
return $dateObj->format('F Y');
}
</a><br>";
}
closedir($dh);
}
}
?>
编辑 2
<?php
$dir = "var/newsletters/";
function getDateFromFileName($filename){
$dateObj = DateTime::createFromFormat('m-Y',substr($filename,1,2).'-'.substr($filename,3,6));
return $dateObj->format('F Y');
}
// Open a directory, and read its contents
if (is_dir($dir)){
if ($dh = opendir($dir)){
while (($file = readdir($dh)) !== false){
//echo $file . "<br>"; OR //echo "<a href=var/newsletters/$file>Click here</a><br>"; WORKING
$formatted_date = getDateFromFileName($file);
echo "<a href=var/newsletters/$file>{$formatted_date}</a><br>";
}
closedir($dh);
}
}
?>
【问题讨论】:
-
缺少复制/粘贴 您还尝试了什么?一边更改名称,一边更改上面的代码以至少显示可点击的链接有多难?在寻求帮助时,您必须表现出一些努力。
-
我能够通过以下方式获得查看正确文件的链接:echo " 单击此处";除了我在文件名末尾有一个额外的“/”会导致链接中断。