2017-07-07 39 views
1

我們得到與&,而不是&網址,從客戶端系統:somedomain.com?param1=test&param2=test2

我期望能獲得$_GET['param1']$_GET['param2']。相反,我得到$_GET['amp;param1']$_GET['amp;param2']

我是否將它作爲重寫規則修復在.htaccess或PHP中?

UPDATE:

一個臨時的解決方法是做以下,但似乎笨拙:

foreach ($_GET AS $key => $value) 
{ 
    $param = str_replace('amp;', '', $key); 
    $_GET[$param] = $value; 
    unset($_GET[$key]); 
} 
+2

'html_entity_decode' –

+4

讓他們停止發送垃圾? –

+0

我們發送電子郵件給他們正確的鏈接。我懷疑他們的電子郵件客戶端弄亂了這個鏈接。在這種情況下,客戶端不太可能對其系統進行更改,因此它現在已成爲我的問題:-( – Cudos

回答

-1

看來你必須定義 「somedomain.com?param1=test &參數2 =測試2」 中HTML。因此HTML將&轉換爲&參考。

只是儘量把&,而不是&這樣的:somedomain.com?param1=test&param2=test2

0

轉換角色?&一些標記,如:

?__Q__str_replace('?', '__Q__', $toUrl)

&__AND__str_replace('&', '__AND__', $toUrl)

並在URL上傳遞此數據。

從url獲取此數據時,請將它們解碼回來。

str_replace('__Q__', '?', $fromUrl)

str_replace('__AND__', '&', $fromUrl)

雖然它的棘手,它的工作原理。

+1

我沒有建議,我說要讓客戶端停止發送狡猾的數據:P –

+1

好吧,刪除你的參考:) – Pupil