如何从 POST 的字符串中提取变量?[复制]

How can I extract variables from a string from POST? [duplicate]

提问人:Dominic Acoustic 提问时间:11/14/2023 最后编辑:user3783243Dominic Acoustic 更新时间:11/14/2023 访问量:56

问:

第一次来这里有问题,但我卡住了,无法弄清楚。任何帮助都是值得赞赏的。

我正在发送一个以“###”分隔的字符串作为“有效负载”。我想将字符串解析为数组以获取单个数据字符串。然后,我想遍历单个字符串以提取变量,以便我可以在数据库中输入。我不确定最好的方法,我一直在测试不同的方法,要么获取空字符串响应,要么状态 500 代码。

以下是我从 POST 发送的示例“有效负载”字符串:

key=03968db0386af63d57f48e8cbfd16971&name=LE%252520Tropical%252520Tuffet%252520%25252D%252520Luau&type=Pot%2520with%2520Plant###key=239fa7207c241d8a55743d9988839055&name=Modern%252520Oasis%252520Philodendron%252520Pot%252520%25252D%252520Pink%252520Swirls&type=Pot%2520with%2520Plant
<?php
$payload = $_POST['payload'];
$records = implode("\n", $payload);
foreach($records as $record){
    list($key,$name,$type) = explode("###", $record);
    echo $key;
}
?>

我希望从 POST 接收有效负载,使用“###”分隔符解析每条记录的单个字符串,从单个字符串中提取键、名称和类型,以便我可以使用 mysqli 添加到我的数据库中。因此,数据库中的每个条目都将有一个键标识符作为主键标识符,以及每个键的统计信息。

谢谢

PHP 解析 post : foreach

评论

0赞 Barmar 11/14/2023
implode()创建一个字符串,而不是一个数组。不能在字符串上使用。你是故意用的吗?foreachexplode()
0赞 Barmar 11/14/2023
您的有效负载字符串只有一个 .因此,您不能将结果分配给 3 个变量。###explode()
0赞 Barmar 11/14/2023
您期望密钥、名称和类型是什么?
0赞 Dominic Acoustic 11/14/2023
要添加到我的数据库中的变量,例如: INSERT INTO .( , , ,$db_name$db_tablekeynametype
0赞 Barmar 11/14/2023
我的意思是这些变量的值应该来自该字符串?若要获取 3 个值,需要两个分隔符。###

答:

0赞 Barmar 11/14/2023 #1

看起来您应该使用它来创建查询字符串数组。然后,您可以使用 parse_str() 将每个参数解析为变量。###name=value

$payload = $_POST['payload'];
$records = explode('###', $payload);
foreach ($records as $record) {
    parse_str($record, $vars);
    ['key' => $key, 'name' => $name, 'type' => $type] = $vars;
    echo $key;
}