我在这个网站上使用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 =”之间
如果我将网址更改为:
注意:我更换了“?”用“&”
现在显示正确的结果(需要调整css,但显示门票!
如何从我无法更改的脚本中正确编写我的URL。
答案 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>
这只有在你知道字符串总是有两个问号时才有效,一个在正确的位置,一个在&符号应该是。它使用正则表达式找到合适的字符串,并简单地替换第二个“?”用&符号。