我在 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。
GCT1015