更改我的网址中的问号

时间:2011-06-11 08:22:34

标签: javascript joomla

我在这个网站上使用joomla。我有一个affilate程序,要求我在我的页面上运行以下html:

标题

var bid = ####; var site =#; 文件撰写( '');

页脚

以下网址已投放且无法使用(显示电子邮件表单) http://www.whatshappeningnow.info/index.php/index.php?option=com_content&view=article&id=764?evtid=1626579&event=ZZ+Top

注意“?”在“= 764”和“evtid =”之间

如果我将网址更改为:

http://www.whatshappeningnow.info/index.php/index.php?option=com_content&view=article&id=764&evtid=1626579&event=ZZ+Top

注意:我更换了“?”用“&”

现在显示正确的结果(需要调整css,但显示门票!

如何从我无法更改的脚本中正确编写我的URL。

2 个答案:

答案 0 :(得分:1)

正如一条评论所说,最好的办法是与联盟计划取得联系并让他们解决这个问题。

作为解决方法,您可以转换联盟计划脚本返回的URL。由于在URL中只有一个“?”允许,您可以将子串中的URL拆分为“?”,然后仅通过放置“?”来重建它。在第一和第二子串之间。像这样:

var newUrl = "";
var urlSubs = affiliateUrl.split("?");
if (urlSubs.length === 0) {
   newUrl = affiliateUrl;
   //-- no "?", do your processing here...
} else {
    newUrl = urlSubs[0] + "?";
    var i = 1;
    for (i = 1; i < urlSubs.length; i++) {
       newUrl = newUrl + "&" + urlSubs[i];
    } 
}

注意:我没有考虑过任何错误检查!

这适用于任何数量的“?”,并且只保留第一个。

答案 1 :(得分:0)

正如Pekka指出的那样,最好的办法就是让他们修复那个bug,但与此同时,假设你能以某种方式访问​​他们返回的字符串,你可以这样做:

<script>
var str = "http://www.whatshappeningnow.info/index.php/index.php?option=com_content&view=article&id=764?evtid=1626579&event=ZZ+Top";
var newStr = str.replace(/(\?)([^\?]*)(\?)/, "$1$2&");
</script>

这只有在你知道字符串总是有两个问号时才有效,一个在正确的位置,一个在&符号应该是。它使用正则表达式找到合适的字符串,并简单地替换第二个“?”用&符号。