如何将随机或基于日期的查询字符串附加到图像

时间:2011-03-10 00:25:20

标签: php string wordpress random querystringparameter

Internet Explorer存在问题。在这种情况下,缓存问题。已保存到我的服务器并在动态生成的站点(WordPress)中引用的图像在IE8中显示为“红色x”时,这些图像以某种方式被修改,但图像的URI在代码中未更改,有时。

当我更改这些资源的URI时,图像会在IE中正确显示。因此,我想在我的图像URI的末尾附加一个有点独特的查询字符串(又名更改“graphic.png”到“graphic.png?d = a334bc4zxdg2”(如果是随机的)或“graphic.png?d = 201103091616”(如果过时了。我对随机查询字符串或“过时”查询字符串并不挑剔 - 只要它是附加到.PNG和.JPG文件类型末尾的长查询字符串。

我试图写自己的,因此非常谦卑。我认为这将通过preg_replace语句来解决......某些事情沿着

<php
echo preg_replace('(png|jpg)', '$1.?d.=<the-randomizing-or-timestamp-code>','some-subject-I-dont-know-how-to-specify')
?>

从上面可以看出,我需要很多帮助来编写这段代码。请注意,我在WordPress中运行,它使用一些独特的钩子,我试图将它应用于身体的全部内容。谢谢!

==更新==

一位朋友建议如下:

// Append PNG files with timestamp query string
function date_images () {
    $new_content = str_replace (".png" ,".png?id=".time() ,$original_content);
    }

add_filter('the_content', 'date_images');

那是在正确的道路上吗?它在Wordpress中无法正常工作,但会使内容元素完全消失。谢谢你的帮助...

3 个答案:

答案 0 :(得分:1)

最好将其作为客户端修复程序实现,以便非IE用户仍然可以获得常规图像URL。

我会试试这个:

<script type="text/javascript" src="PATH-TO-JQUERY"></script>
<script type="text/javascript">
// document.all is IE only
if ( document.all )
{
    $(document).ready(function(){
        // grab each image
        $('img').each(function(){
            var date = new Date;
            // add the current unix timestamp in microseconds to the the image src as a query string
            this.src = this.src + '?' + date.getTime();
        });
    });
}
</script>

<img src="image1.gif" />
<img src="image2.gif" />
<img src="image3.gif" />

答案 1 :(得分:0)

如果我理解你的话,你可以这样做:

echo $variable.'?d='time();

将unixtime标记附加到字符串的末尾。

答案 2 :(得分:0)

所有需要做的就是欺骗浏览器重新加载图像。

文件名可以在任何地方保持不变,当你决定显示图像时,唯一需要改变的是img src =“”。

这样的事情:

<img src="<?php echo $img_name.'?'.time(); ?>" />