我在 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 关注
- 151 浏览
添加回答
举报
0/150
提交
取消