Php &;amp;在URL中弄乱$\u获取变量

Php &;amp;在URL中弄乱$\u获取变量,php,Php,我们使用获取URL&而不是来自客户端系统的&:somedomain.com?param1=test&;param2=test2 我希望获得$\u get['param1']和$\u get['param2']。相反,我得到了$\u get['amp;param1']和$\u get['amp;param2'] 我是在.htaccess还是在PHP中将其作为重写规则进行修复 更新: 暂时的解决办法是执行以下操作,但这似乎很笨拙: foreach ($_GET AS $key =>

我们使用
获取URL&
而不是来自客户端系统的
&
somedomain.com?param1=test&;param2=test2

我希望获得
$\u get['param1']
$\u get['param2']
。相反,我得到了
$\u get['amp;param1']
$\u get['amp;param2']

我是在.htaccess还是在PHP中将其作为重写规则进行修复

更新:

暂时的解决办法是执行以下操作,但这似乎很笨拙:

foreach ($_GET AS $key => $value)
{
    $param = str_replace('amp;', '', $key);
    $_GET[$param] = $value;
    unset($_GET[$key]);
}
似乎您已经在HTML中定义了“somedomain.com?param1=test¶m2=test2”。因此HTML正在将
&
转换为
&参考


只要试着把
&
而不是像这样:
somedomain.com?param1=test&;param2=test2

将字符
&
转换为一些令牌,如:

\uuuq\uuuu
使用
str\u替换(“?”、“\uu Q\uuuuuuu”、$toUrl)

&
\uuuuu和uuu
str\u替换('&','\uu和uuuu',$toUrl)

并在url上传递此数据

从url获取此数据时,请将其解码回来

str\u replace(“\uu Q\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu

str\u replace(“\u和”&“,$fromUrl)


尽管这很棘手,但它仍然有效。

html\u entity\u decode
让他们停止发送垃圾邮件?我们会发送一封包含正确链接的电子邮件。我怀疑他们的电子邮件客户端弄乱了链接。在这种情况下,客户端不太可能对其系统进行更改,因此现在这成了我的问题:-($在我有机会执行
html\u entity\u decode
之前填充。当然,我可以循环执行§\u GET并替换
amp
,但我认为这是一个笨拙的解决方案。根据经验,如果你让他们“侥幸逃脱”现在做错了事情,不管他们把事情搞砸了,这永远都是你的问题。这甚至不是因为你的应用程序很奇怪,他们使用了一个众所周知的、有文档记录的标准协议,把事情搞砸了。我没有建议,我说的是让客户停止发送不可靠的数据:POk,删除你的引用:)