【问题标题】:how do i get xml filesnames from local directory based on folder date modified如何根据修改的文件夹日期从本地目录获取 xml 文件名
【发布时间】:2014-07-08 16:20:02
【问题描述】:

我需要帮助才能从本地目录获取 xml 文件,但只显示没有扩展名的 xml 文件名。在我的网站中,我安装了内容管理系统,该系统生成的页面为 .xml 扩展名,但我只想显示 xml 文件名,但基于网站最新帖子列上修改的文件夹日期。

例如

file name abc folder date modified 7/8/2014
file name xyz folder date modified 7/8/2013

但我希望系统应该根据修改的文件夹日期自动重新排列文件名

这是我的代码,但出现错误

$dir = "data/pages/";
if (is_dir($dir)) {
if ($dh = opendir($dir)) {
while (($file = readdir($dh)) !== false) {

if (($file !== '.') && ($file !== '..') ) {
$xml = simplexml_load_file($file);  

$RGSostituzione = $xml->attributes()->Sostituzione;
echo "<li>File $file - <b>Sostituzione:</b> $RGSostituzione</li>";
}
}
closedir($dh);
}
}

从本地目录获取文件名时出现此错误

Warning: simplexml_load_file() [function.simplexml-load-file]: 
.htaccess:1: parser error : Start tag expected, '<' not found in

应该应用什么代码根据修改的文件夹日期重新排列文件名请帮助我提前谢谢?

【问题讨论】:

  • 关于错误 - 你知道readdir() 返回文件名,而不是整个路径,对吧?不应该是:simplexml_load_file($dir.$file)?如果不是这样,请检查您的 XML 文件是否具有正确的格式以及它们是否实际包含在 $xml 对象中。至于文件夹修改日期,你在找filemtime()之类的吗?
  • 是的,如何使用 filemtime 功能?
  • 您基本上可以在手册中阅读它 - 第一个参数是文件的路径,作为回报,您可以获得修改日期。您应该尝试将它与date() 一起使用以获得正确的格式。 (其实,我很快就会把所有这些作为答案,这样会更容易。)

标签: php xml file directory


【解决方案1】:

不确定您是指文件夹修改日期还是文件修改日期(因为对我来说,第二个更有意义)。无论如何,要检索文件修改日期,您可以使用filemtime() 函数。这将返回 Unix 时间戳形式的日期(如手册页中所述),因此您可以将其返回值用作函数 date() 的第二个参数,以便以适合您的格式检索日期.请注意,除非您使用了 date_default_timezone_set() 函数(使用 date() 函数时),否则您将收到 E_WARNING。

$file_date = date("Y-m-d", filemtime("file.xml"));

要对这些进行排序,您可以使用算法。选择哪一个完全取决于您使用的日期格式(在最坏的情况下,您始终可以使用usort 来获得用户定义的算法)。如果您只是使用Y-m-d 格式,那么您可以使用算法sort()asort()ksort(以及相反的算法,如果您现在感兴趣的话)根据日期对数组进行排序.

如果我是你,我会将所有从目录中检索到的值放入一个数组中。您可以手动将当前 while 循环中的所有值放入数组中,然后对其进行排序,或者您可以查看 scandir() 函数。就个人而言,我会做以下事情:

$temp = scandir($dir);
foreach ($temp  as $filename)
{
    if ($filename !== "." && $filename !== "..")
        $files[date("Y-m-d", filemtime($filename))] = $filename;
}
ksort($files);

以上将使得$files 包含一个带有文件名的元素数组,在修改日期之后排序(这是数组的键)。请注意,上述代码的精度仅适用于几天 - 如果您想更彻底,您将不得不使用另一种日期格式

如果我误解了任何内容,或者您​​还有其他问题,请告诉我。至于错误部分,我已经通过 cmets 获得了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-10
    • 1970-01-01
    • 1970-01-01
    • 2013-06-07
    • 1970-01-01
    • 1970-01-01
    • 2022-01-20
    相关资源
    最近更新 更多