0

我一直在寻找所有地方,但似乎找不到像我这样的问题。也许我没有把正确的关键词放在一起;但也许我会更幸运地解释我的问题。

我整理了以下小代码:

    $image_types = array('gif','png','jpg');
    $recent = array();

    foreach($image_types as $image_type) {
        foreach(glob('first/second/*.'.$image_type) as $filename){
            $recent[$filename] = time() - filemtime($filename);
        }
    }

    $recent = array_keys($recent, min($recent));
    $recent_img = $recent[0];

它应该做的是查看特定文件夹并找到最新图像,然后将其放入网页中。它所做的是找到最新的图像、路径和所有内容。所以一切都在进行中。如果我echo $recent_img得到最新的图像src,那么显然我想在之后放置以下代码:<img src="<?php echo $recent_img ?>" />我应该得到图像。果然,一切正常,甚至在 HTML<img>中定位到我需要的图像。但是,此时有些事情变得混乱!

如果单独glob()设置为路径first,则代码完全有效:图像显示在网站中。但是随着second文件夹的添加,除了在网站上显示图像之外,它会执行所有操作。

于是我去结果网站查看源代码,图片代码如下:

    <img src="first/second/img.jpg" style="display: none !important; visibility: hidden !important; opacity: 0 !important; background-position: 0px 0px;" width="0" height="0">

注意等等display:none!importantvisibility:hidden!important几乎就像 CSS 被设置为尽其所能避免显示图像一样。包括在图像明显不是 0 x 0 像素的情况下将宽度和高度设置为 0。(以防万一:我的样式表中也没有任何实例会导致在我的项目中的任何图像上将所有内容设置为 0 和隐藏等。)

但是,正如我所说,当路径只有一部分时,不会发生这种情况,即文件夹first。我尝试将一个文件夹中的所有图像放入另一个文件夹,但问题仍然存在。我已经在 Chrome 中当场编辑了 CSS 值,但仍然没有。

这似乎是一个荒谬的问题,因为除了代码在父文件夹内的文件夹内寻找文件外,没有任何变化。此外,因为代码实际上可以显示我需要的文件及其路径,而不是文件本身。

供你们查看的在线试用示例和 TEMP 解决方案,或者更确切地说,“解决方法”。

我讨厌解决问题。它通常会使事情复杂化和/或使它们变得混乱。首先,在这种情况下,这是一个组织问题。最好将所有图像放在一个文件夹中,然后为不同类型创建子文件夹。让许多图像文件夹漂浮在根目录上对我来说不是一个好主意。其次,当错误中似乎没有逻辑时,不得不使用“解决方法”似乎很荒谬。第三,我真的很想了解发生了什么,而不是把它变成 PHP 百慕大三角。所以请不要把我的 TEMP 解决方案当作我放弃,请继续在这个美妙的地方发挥协同作用,毫无疑问,我们会在某个时候找到解决方案。

无论如何,您可能已经猜到的“解决方法”是将second文件夹放在与文件夹相同的目录中first,即根目录。因此,这应该解决该特定问题。但如果你问我,这不是一个友好的解决方案。

我被要求上传该问题的在线试用版,我已经这样做了>>HERE<<。您将能够看到相同的代码在first/second/和 中查找最新图像first/,并且您会发现其中一个工作得非常好,而另一个却神秘地失败了!

问:我刚想到。它可能与路径名的长度有关吗?即first/可以,但是first/second/太长了?考虑到从路径中检索信息是成功的,这没有多大意义,而且问题是在 HTML 结果的一边,但我已经尝试将second文件夹放在根目录中并给它一个 10-字母名称和问题被重新创建。然而,这只发生在 WAMP localhost 中,因为当我在线上传所有内容时,长度似乎并不重要。但是,即使在网上,正如您从我的LINK中看到的那样,第一个问题仍然存在。

4

1 回答 1

0

您可以尝试使用 jquery 检索 src 和更新:

$.get('image.php').success(function(src) {
    $('#myimg').attr('src',src);
});
于 2013-03-03T07:21:54.630 回答