匹配smarty或javascript / jQuery

时间:2015-11-02 12:32:32

标签: javascript jquery regex smarty

我正在网站上工作,但不知何故,我有时会在某些字符串结束后添加内容时出现小错误。

例如: 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

希望这可以帮助某人一次。

1 个答案:

答案 0 :(得分:1)

如果您尝试在控制台中执行此window.decodeURIComponent("%3Fv%3D1"),则只返回“?v = 1”,这可能是一种管理客户端缓存的方法... v (版本?)参数更改它会强制浏览器下载资源,即使已经缓存了......

我认为这是一个你无法剥夺的重要信息!

智能解决方案可以简单地解码这个参数....你应该,但我不确定,试试http://www.smarty.net/docs/en/language.modifier.unescape.tpl ......

如果无法通过smarty解码URI组件,您可以使用您使用window.decodeURIComponent而不是正则表达式剥离下面发布的代码通过Javascript来完成。