Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么PHP不处理$\u包含符号和“&”的POST数据php://input 是否包含所有数据?_Php_Csv_Post - Fatal编程技术网

为什么PHP不处理$\u包含符号和“&”的POST数据php://input 是否包含所有数据?

为什么PHP不处理$\u包含符号和“&”的POST数据php://input 是否包含所有数据?,php,csv,post,Php,Csv,Post,我对PHP中的POST数据有一个奇怪的问题。每当POST数据包含“&”符号和字符时,它就开始表现得非常奇怪。请参见下面的示例 由远程端发布并使用文件\u put\u contents文件\u get\u contents'接收的数据php://input'; 当我把内容“file.txt”归档时,$\u POST['csv'];我得到了这个被截断的本地文件输出,请注意,它缺少双qoutes,文件到此结束: 0,"ITEM 1" 1,"ITEM 2 当我把内容“file.txt”归档时,打印“$

我对PHP中的POST数据有一个奇怪的问题。每当POST数据包含“&”符号和字符时,它就开始表现得非常奇怪。请参见下面的示例

由远程端发布并使用文件\u put\u contents文件\u get\u contents'接收的数据php://input';

当我把内容“file.txt”归档时,$\u POST['csv'];我得到了这个被截断的本地文件输出,请注意,它缺少双qoutes,文件到此结束:

0,"ITEM 1"
1,"ITEM 2
当我把内容“file.txt”归档时,打印“$csv””,true;这一次,文本被奇怪地修改,而符号被新行、3个制表符和括号所取代:

[csv] => 0,"ITEM 1"
1,"ITEM 2
            [CO,"
2,"ITEM 3"
我不知道为什么会发生这种情况,因为我认为$u POST没有任何改变。但显然是这样。提前感谢您提供的任何提示或想法,为什么会发生这种情况,以及如何访问$_POST['csv'],使其不被修改


注:我认为这不重要,但我只想提到使用的Web服务器是nginx。

似乎您正在尝试将csv文件作为url编码的数据发送,而不使用url编码的数据。&是分隔变量的特殊字符

正确的数据应该是

csv=0%2C%22ITEM%201%22%0A1%2C%22ITEM%202%26CO%22%0A2%2C%22ITEM%203%22
%26是已编码的(&N)


无论从何处发布此数据,都需要在发送数据之前对数据进行url编码。

如果您使用var_dump$\u POST;,您会得到什么;?&通常是查询字符串的一部分,因此可能会出错。@aynber var_dump$\u POST;返回几乎与print_r相同的值,即1,第2项[CO,而不是1,第2项&COYep,它看起来像&被用作查询字符串分隔符。请检查您提交表单的方式,以便能够正确传递-。谢谢,这现在是有意义的。但是,我无法控制发送端。如果我无法说服他们对数据进行更改,PHP t是否有解决方法o处理这种非标准情况?如果数据只是csv=,只需剪掉csv=部分,您就有了数据。
csv=0%2C%22ITEM%201%22%0A1%2C%22ITEM%202%26CO%22%0A2%2C%22ITEM%203%22