第一次带着问题来到这里,但我被困住了,无法弄清楚这一点。如有任何帮助,我们将不胜感激。
我正在发送一个以“###”分隔的字符串作为“有效负载”。我想将字符串解析为数组以获取单独的数据字符串。然后,我想循环遍历各个字符串以提取变量,以便可以在数据库中输入。我不确定最好的方法,我一直在测试不同的方法,或者获取空字符串响应,或者状态 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 添加到我的数据库。因此,数据库中的每个条目都会有一个主键标识符和每个键的统计信息。
谢谢你
看起来您应该使用
###
创建查询字符串数组。然后你可以使用 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;
}
您需要在
###
处分割为一个部分。然后你可以解析 URL 内容并使用 parse_str() 来解析它。最后一步是解码 URL 编码值。
$payload = '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';
foreach (explode('###', $payload) as $section) {
parse_str(rawurldecode($section), $output);
$decoded = array_map('urldecode', $output);
var_dump($decoded);
}
给你两个数组
array(3) {
'key' =>
string(32) "03968db0386af63d57f48e8cbfd16971"
'name' =>
string(25) "LE Tropical Tuffet - Luau"
'type' =>
string(14) "Pot with Plant"
}
array(3) {
'key' =>
string(32) "239fa7207c241d8a55743d9988839055"
'name' =>
string(43) "Modern Oasis Philodendron Pot - Pink Swirls"
'type' =>
string(14) "Pot with Plant"
}