我正在网站上工作,但不知何故,我有时会在某些字符串结束后添加内容时出现小错误。
例如:
style="background-image:url({$sub.image});"
返回
style="background-image:url(http://blablalba.fr/phoenix.jpg%3Fv%3D1);"
如您所见,链接结束后(.jpg之后)有%3Fv%3D1 。我不知道这是从哪里来的,我想删除它。
所以我的问题是:在smarty中有没有办法在匹配一个单词后截断一个字符串?
如果不可能,那么Js / jQuery中最简单的方法是什么?
我强调这个正则表达式匹配正确的字符串:/^(.*?\.jpg)/
因此它引导我:
$('.append').each('li',function(){
var newLink = $(this).find('div').css('background-image').match(/^(.*?\.jpg)/);
$(this).find('div').css('background-image',newLink);
})
但这仍然是错误的,所以如果有人更好地了解我该如何做到这一点?
如果它可以提供一些帮助,那么这是JsFiddle。
好的就是说@Hitmands就在下面就是URI编码的问题。 所以这是最清晰,最智能的解决方案:
$('.imgLittle').each(function() {
newLink = decodeURIComponent($(this).css('background-image'));
$(this).css('background-image',newLink)
})
这是最后的(工作)JsFiddle。
希望这可以帮助某人一次。
答案 0 :(得分:1)
如果您尝试在控制台中执行此window.decodeURIComponent("%3Fv%3D1")
,则只返回“?v = 1”,这可能是一种管理客户端缓存的方法... v (版本?)参数更改它会强制浏览器下载资源,即使已经缓存了......
我认为这是一个你无法剥夺的重要信息!
智能解决方案可以简单地解码这个参数....你应该,但我不确定,试试http://www.smarty.net/docs/en/language.modifier.unescape.tpl ......
如果无法通过smarty解码URI组件,您可以使用您使用window.decodeURIComponent而不是正则表达式剥离下面发布的代码通过Javascript来完成。