【问题标题】:PHP to create Links for files in a folderPHP为文件夹中的文件创建链接
【发布时间】: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 '点击这里' 和" 点击这里";但我都收到了解析错误。
  • 我能够通过以下方式获得查看正确文件的链接:echo " 单击此处";除了我在文件名末尾有一个额外的“/”会导致链接中断。

标签: php html pdf


【解决方案1】:

你可以添加这个函数来帮助从文件名中获取日期

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);
  }
}
?>  

【讨论】:

  • 看起来正是我想要的。我将在今晚或明天晚些时候处理这​​个问题。我会让你知道我的想法!
  • 如果你觉得有帮助,我认为你应该考虑标记答案
  • 我能够使链接正常工作,但仍然无法获得要转移的名称。我已经编辑了我原来的问题。
  • 可以使用trim php函数去掉尾随的/
  • 再次感谢您的帮助。我复制并粘贴了您更新的代码,但在引用页面中的最后一行时仍然出现错误,即
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多