Php 基于单词重定向到附属链接

Php 基于单词重定向到附属链接,php,amazon-web-services,affiliate,Php,Amazon Web Services,Affiliate,我正在编写PHP代码,用于根据URL中的单词自动将URL重定向到附属URL 这是我正在使用的代码: if (stripos($mylink, "amazon.in") > 0) { if (strpos($mylink, "?") > 0) { $tmp = $mylink."&affiliate_id"; } else { $tmp = $mylink."?affiliate_id"; } $loc = "L

我正在编写PHP代码,用于根据URL中的单词自动将URL重定向到附属URL

这是我正在使用的代码:

if (stripos($mylink, "amazon.in") > 0) {
    if (strpos($mylink, "?") > 0) {
        $tmp = $mylink."&affiliate_id";
    } else {
        $tmp = $mylink."?affiliate_id";
    }

    $loc = "Location:".$tmp;
    header($loc);
    exit();
}
但问题是,当Amazon URL类似于:
http://www.amazon.in/English-Movies-TV-Shows/b/ref=sa_menu_movies_all_hindi?ie=UTF8&node=4068584031
它像这样添加附属id:
ie=UTF8&affiliate\u id
(它自动删除节点及其值)但我希望它是这样的:
ie=UTF8&node=4068584031&affiliate\u id

这意味着,如果它是亚马逊链接,我每次都需要在URL的末尾添加
&affiliate\u id

实际上,我只想实现以下简单的事情:如果URL没有任何
s,我需要放置
?affiliateid
,如果URL有
,我只需要在末尾附加
&affiliateid


你能推荐一个非常简单的方法来实现我所需要的吗?

让PHP为你做字符串解析。假设你的会员id是XYWZ

if (strpos($mylink, "amazon.in") !== 0) {
    $urlarray=parse_url($mylink);
    $urlarray['query']='affiliate_id=XYWZ&'.$urlarray['query'];
    $newurl= $urlarray['scheme'].'://'.$urlarray['host'].$urlarray['path'].'?'.$urlarray['query'];

    echo $newurl;
}
将输出

http://www.amazon.in/English-Movies-TV-Shows/b/ref=sa_menu_movies_all_hindi?affiliate_id=XYWZ&ie=UTF8&node=4068584031
看到了吗?如果有问号,我不必担心。它将在parse_url的输出中被剥离


编辑:使用$mylink而不是$theurl

我试图重现您遇到的问题,但输出似乎符合您的标准。这怎么不适合你?嗨,幽灵,我还想知道同样的事情,它只是删除了节点并在该位置添加了附属id。请建议一些其他方法,我可以在url包含任何特殊字符的末尾直接添加附属id。您可能会受益于
print
ing/
var\u dump
ing代码中的一些变量,以便帮助调试当前代码不工作的原因(因为它似乎应该工作)。您可以从转储结果URL的值开始,而不是重定向到它。如果URL确实不正确,请围绕您提供的代码片段转储变量。也许您可以转储
stripos
strpos
的结果,以确定通过条件语句执行的是哪条路线。关于这个问题的答案引发了大量讨论,包括尝试将讨论带到电子邮件和第三方聊天系统。因此,我怀疑这在实践中是否过于宽泛,我也投了相应的票。嗨,实际上url是可变的,它可以是amazon.in或myntra.com或flipkart.com或其他任何东西,所以我使用stripos先检查url是什么,然后我需要将我的会员id放在ned上,这与我上面显示的不起作用。你建议的方法有一个固定的url,这与我的情况不同。请help meI仅将该固定url用作示例。我把代码改为if(stripos($mylink,“amazon.in”)>0{$theurl='$mylink';$urlarray=parse_url($theurl);$urlarray['query']='affiliateid&'.$urlarray['query'];$newurl=$urlarray['scheme'].://.$urlarray['host'.$urlarray['path'].'?'.$urlarray['query'];$loc loc位置:$newurl;header($newloc);exit();}但是我得到的输出是://$mylink?affiliateid&查看我的编辑。在执行实际重定向之前,请尝试输出新的url值。只是为了确保链接版本是正确的。这样,您就可以知道节点是否被剥离了,我只需要在末尾添加$affiliate id,只要它包含任何特殊字符,如?“