为了账号安全,请及时绑定邮箱和手机立即绑定

为什么 PHP 不处理包含&符号“&”的 $_POST 数据

为什么 PHP 不处理包含&符号“&”的 $_POST 数据

PHP
素胚勾勒不出你 2022-07-09 10:59:59
我在 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 编码。


查看完整回答
反对 回复 2022-07-09
  • 1 回答
  • 0 关注
  • 151 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信