我处理从jotform小部件提交的数据 - 当我运行print_r($ _ POST)时,我得到以下数据
Array (
[formID] => 40923773875567
[q1_clickTo] => Country: UNITED STATES
Province: Kentucky
Latitude: 37.568694
Longitude: -84.29632229999999
[website] => [simple_spc] => 40923773875567-40923773875567
)
我需要帮助检索国家,省,纬度,经度和网站[simple_spc]数据
请帮助 - 谢谢
答案 0 :(得分:1)
您遇到的问题是s1_clickTo
中的数据是一个字符串。我建议您以其他格式获取数据,因为现在您必须自己解析它。
我会在新行explode()
上使用\n
(或\r\n
,具体取决于实际格式),然后针对每个键/值,在:
上展开或使用RegEx匹配。
答案 1 :(得分:0)
以这种方式访问它们。
echo $_POST['q1_clickTo'];
echo $_POST['website']['simple_spc'];
答案 2 :(得分:0)
用这样的闭包编写一些解析器可能会更好吗?
$a = array(
'formID' => '40923773875567',
'q1_clickTo' => "Country: UNITED STATES
Province: Kentucky
Latitude: 37.568694
Longitude: -84.29632229999999",
'website' => array(
'simple_spc' => '40923773875567-40923773875567'
)
);
$trim = function($v) { return trim($v); };
$float = function($v) { return (float) $v; };
$mapping = array(
'spc' => array('website', function($v) { return $v['simple_spc']; }),
'data' => array('q1_clickTo', function($v) {
$data = explode("\n", $v);
$result = [];
foreach ($data as $line) {
$parts = explode(':', $line);
$result[$parts[0]] = $parts[1];
}
return $result;
}),
'country' => array('Country', $trim),
'longitude' => array('Longitude', $float),
'latitude' => array('Latitude', $float),
'province' => array('Province', $trim)
);
$result = [];
foreach ($mapping as $key => $value) {
$info = $a[$value[0]];
$info = $value[1]($info);
if (!is_array($info)) {
$result[$key] = $info;
} else {
foreach ($info as $infoKey => $infoValue) {
$a[$infoKey] = $infoValue;
}
}
}
var_export($result);
这里的工作示例:http://sandbox.onlinephpfunctions.com/code/04f28278bb00b3ca0372d85a837537a2552bc248