我正在使用具有自定义PHP功能的数据Feed插件,该功能允许我重写Feed中的每个Buy_URL。比方说,原来的Buy_URL之一就是:
http://www.affiliatecompa.com/product/clean.com?ref=ab
我想用
重写URL的开头和结尾“http://www.dsqce.com/click-111111-1111XX111?url=http%3A%2F%2Fwww.affiliatecompa.com”
和
分别是“laik”。所以它应该成为:http://www.dsqce.com/click-111111-1111XX111?url=http%3A%2F%2Fwww.affiliatecompa.com/product/clean.com?ref=laik
我联系了该插件的作者,他告诉我将以下代码放在我主题的function.php中,然后在插件中调用该函数
function WOKI_Change_Url($x){
$y = substr($x, 29);
$y = substr($y, -2);
return "http://www.dsqce.com/click-111111-1111XX111?url=http%3A%2F%2Fwww.affiliatecompa.com" . $y . 'laik';
}
显然它不起作用,因为它删除了URL的任何其他部分,现在每个Buyurl都已成为
http://www.dsqce.com/click-111111-1111XX111?url=http%3A%2F%2Fwww.affiliatecompa.comlaik
我怀疑substr在这种情况下不适合我想要做的事情。我应该在函数中使用str_replace吗?
答案 0 :(得分:0)
str_replace()
可以适合您要做的事情,但他的方法也可以。他刚刚在substr()
上遗漏了一个参数。他的代码应该与添加的参数一起使用(假设你在字符串的ref=ab
部分总是有一个2个字符的值:
function WOKI_Change_Url($x){
$y = substr($x, 29);
$y = substr($y, 0, -2); //the 0 here tells it to use the whole string, minus the last two chars; without the zero, this would muck things up a lot
return "http://www.dsqce.com/click-111111-1111XX111?url=http%3A%2F%2Fwww.affiliatecompa.com" . $y . 'laik';
}
对于str_replace()
,如果您知道要替换的内容的值,那也可以工作,但是使用str_replace进行转义会变得复杂。如果始终ref=ab
完全被ref=laik
替换,那么以下内容应该有效(使用urlencode()
执行转义):
function WOKI_Change_Url($x){
$y = str_replace($x, "ref=ab", "ref=laik"); //this replaces the ref=ab part
return "http://www.dsqce.com/click-111111-1111XX111?url=http%3A%2F%2Fwww.affiliatecompa.com" . urlencode($y);
}
请注意,如果您不确定要替换ab
,则可能需要使用preg_replace,而使用正则表达式来替换{{3}}之后的任何内容{1}}。类似的东西:
ref=