我的服务器上有一个文件夹,每月会收到一些简报文件。这些丢弃将自动发生,并且我已经被要求在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(例如,9月将是n092017.pdf)。我需要做的是将n092017.pdf转换为&#34; 2017年9月&#34;然后创建链接,这样目录中的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);
}
}
?>
答案 0 :(得分:0)
您可以添加此功能以帮助从文件名中获取日期
function getDateFromFileName($filename){
$dateObj = DateTime::createFromFormat('m-Y',substr($filename,1,2).'-'.substr($filename,3,6));
return $dateObj->format('F Y');
}
致电getDateFromFileName("n102017.pdf")
打印October 2017
修改强>
要更改方案中的名称
<?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){
if($file == "." || $file ==".."){
continue;
}
$formatted_date = getDateFromFileName($file);
echo " <a href=var/newsletters/$file>{$formatted_date}</a><br>";
closedir($dh);
}
}
?>