我在 PHP 中遇到了 POST 數據的奇怪問題。每當 POST 數據包含“&”(和號字符)時,它的行為就會非常奇怪。請看下面的例子。由遠程端發布并使用接收的數據file_put_contents(file_get_contents('php://input'));csv=0,"ITEM 1"1,"ITEM 2&CO"2,"ITEM 3"當我這樣做時,file_put_contents('file.txt', $_POST['csv']);我將此截斷的輸出到本地文件(請注意,它缺少雙 qoutes 并且文件此時結束):0,"ITEM 1"1,"ITEM 2當我這樣做時,file_put_contents('file.txt', print_r($_POST['csv'], true));這次文本被奇怪地修改了,&符號被換行符、3個制表符和括號替換:[csv] => 0,"ITEM 1"1,"ITEM 2 [CO,"2,"ITEM 3"我不知道為什么會這樣,因為我認為 $_POST 沒有以任何方式改變。但顯然它是。提前感謝您提供任何提示或想法,為什么會發生這種情況以及如何訪問 $_POST['csv'] 以便它不會被修改。PS:我認為應該沒關系,但我只會提到使用的網絡服務器是nginx。
1 回答

GCT1015
TA貢獻1827條經驗 獲得超4個贊
似乎您正在嘗試將 csv 文件作為 url 編碼數據發送,而無需對數據進行 url 編碼。& 是分隔變量的特殊字符。
正確的數據應該是
csv=0%2C%22ITEM%201%22%0A1%2C%22ITEM%202%26CO%22%0A2%2C%22ITEM%203%22
%26
是 & 編碼的。
這些數據從哪里發布,需要在發送數據之前對數據進行 url 編碼。
- 1 回答
- 0 關注
- 189 瀏覽
添加回答
舉報
0/150
提交
取消