为所有图像URL添加时间戳

时间:2013-02-09 22:08:24

标签: php regex preg-replace

我认为自己相当聪明,但除了简单的正则表达式之外的任何东西都会让我头晕目眩。我很害怕。

我正在试图找出一个preg_replace来替换所有图像链接并添加一个时间戳(通常的傻瓜缓存技巧)。所以我要找的是一个需要

的正则表达式
blah blah blah <a href='blah>blah</a> blah <img src="http://blah.com/test.jpg" /> blah blah <a href="blah"><img src='/tester.jpg' /></a> blah blah

并将其变为

blah blah blah <a href='blah>blah</a> blah <img src="http://blah.com/test.jpg?timestamp=123" /> blah blah <a href="blah"><img src='/tester.jpg?timestamp=123' /></a> blah blah.

是否可以在单个preg_replace中执行此操作?如果没有,有关最佳方法的任何建议吗?

2 个答案:

答案 0 :(得分:1)

HTML解析并不那么简单。 但你可以尝试这样的事情:

$search = "/(\<img[^>]+src=)(['\"])([^'\"]+)['\"]/i";
$result = preg_replace($search, '\1\2\3?timestamp='.$ts.'\2', $input);

答案 1 :(得分:1)

您可以通过JQuery函数运行您的页面:

var timestamp = '?timestamp=123';
$('img').each(function () {
  if ($(this).attr('src')) {
    $(this).attr('src', ($(this).attr('src') + timestamp));
  }
});

Here is an example