10

我正在使用file_get_contents('php://input')从特定 Web 服务中检索所有 POST 参数/值,例如:

$postText = file_get_contents('php://input');

结果是这样的:

inReplyToId=MG1133&to=61477751386&body=test&from=61477751386&messageId=166594397&rateCode=

然后我需要获取每个单独的键/值对,因为我需要将它们设置到新数据库记录中的字段中。例如,我想最终得到:

$inReplyToId = MG1133
$to = 61477751386
$body = test

一旦我知道了单个值,我就可以在数据库中设置相应的字段。我通常会使用:

if(isset($_POST['inReplyToId']) && $_POST['inReplyToId'] !== '' ) {
    $request->setField('_kf_GatewayMessageID', $_POST['inReplyToId']);
}

但这在这种情况下不起作用,因为它不是application/x-www-form-urlencoded正在提交的表单。

4

3 回答 3

12

您可以使用parse_str函数来解析查询字符串:

$queryString = 'inReplyToId=MG1133&to=61477751386&body=test&from=61477751386&messageId=166594397&rateCode=';
$data = array();
parse_str($queryString, $data);
var_dump($data);

编辑:

例如,我想最终得到:

$inReplyToId = MG1133
$to = 61477751386
$body = test

要将数组键作为变量,您可以使用extract

extract($data);

编辑 2:如果您已经有使用$_POST具有相应索引的变量的代码,您可以将数据与其合并:

$_POST = array_merge($data, $_POST);

但是修改这些变量是不可取的。

于 2013-07-01T11:47:08.057 回答
1

看看parse_str()函数,它将参数化字符串转换为关联数组。

于 2013-07-01T11:47:27.190 回答
1

您可以使用此代码!尝试!

<?php
$postdata = file_get_contents("php://input"); 
//$postdata = '{"mail": "mistermuhittin@gmail.com", "number": 6969 }';

$obj = json_decode($postdata); 
echo $obj->{'mail'}; // mistermuhittin@gmail.com

?>
于 2017-09-28T16:59:31.313 回答