查询字符串
name=form1
&settings={"en":{"name":"Form 1","classes":["leftAlign"],"heading":"h2","styles":{"fontFamily":"default","fontSize":"default","fontStyles":[1,0,0]}},"styles":{"color":"default","backgroundColor":"default"}}
&fields[0].id=null&fields[0].name=password1&fields[0].type=Password&fields[0].settings={"en":{"label":"Password 1","value":"","description":"","styles":{"fontFamily":"default","fontSize":"default","fontStyles":[0,0,0]}},"_persistable":true,"required":true,"restriction":"no","styles":{"label":{"color":"default","backgroundColor":"default"},"value":{"color":"default","backgroundColor":"default"},"description":{"color":"777777","backgroundColor":"default"}}}&fields[0].sequence=0&fields[0].status=
........
我需要将其转换为数组输出。我用几个方法将查询字符串解析为数组。这是我得到的输出。但数组'Fields'值未显示。有没有其他方法可以得到它? field [0],fields [1]&领域[2]有关键&价值但没有显示。
Array
(
[name] => form1
[settings] => {"en":{"name":"Form 1","classes":["leftAlign"],"heading":"h2","styles":{"fontFamily":"default","fontSize":"default","fontStyles":[1,0,0]}},"styles":{"color":"default","backgroundColor":"default"}}
[fields] => Array
(
[0] =>
[1] =>
[2] =>
)
[create] => Create
)
答案 0 :(得分:1)
<?php
$a = explode('&', $QUERY_STRING);
$i = 0;
$field = array();
while ($i < count($a)) {
$b = split('=', $a[$i]);
field[i]= htmlspecialchars(urldecode($b[1]));
$i++;
} ?>
答案 1 :(得分:1)
更新代码
$query = 'name=form1'
. '&settings={"en":{"name":"Form 1","classes":["leftAlign"],"heading":"h2","styles":{"fontFamily":"default","fontSize":"default","fontStyles":[1,0,0]}},"styles":{"color":"default","backgroundColor":"default"}}'
. '&fields[0].id=null&fields[0].name=password1&fields[0].type=Password&fields[0].settings={"en":{"label":"Password 1","value":"","description":"","styles":{"fontFamily":"default","fontSize":"default","fontStyles":[0,0,0]}},"_persistable":true,"required":true,"restriction":"no","styles":{"label":{"color":"default","backgroundColor":"default"},"value":{"color":"default","backgroundColor":"default"},"description":{"color":"777777","backgroundColor":"default"}}}&fields[0].sequence=0&fields[0].status='
//adding fields[1]
. "&fields[1].id=null&fields[1].name=f1name&fields[1].type=f1type";
$resultArray = array();
foreach (explode('&', $query) as $pair) {
list($key, $value) = explode('=', $pair);
//a dot present
if (strpos($key, '.') !== false) {
list($subKey, $subVal) = explode('.', $key);
if (preg_match('/(?P<name>\w+)\[(?P<index>\w+)\]/', $subKey, $matches)) {
$resultArray[$matches['name']][$matches['index']][$subVal] = $value;
} else {
$resultArray[$subKey][$subVal] = $value;
}
} else {
$resultArray[$key] = $value;
}
}
echo '<pre>' . print_r($resultArray, true) . '</pre>';
<强>输出强>:
Array
(
[name] => form1
[settings] => {"en":{"name":"Form 1","classes":["leftAlign"],"heading":"h2","styles":{"fontFamily":"default","fontSize":"default","fontStyles":[1,0,0]}},"styles":{"color":"default","backgroundColor":"default"}}
[fields] => Array
(
[0] => Array
(
[id] => null
[name] => password1
[type] => Password
[settings] => {"en":{"label":"Password 1","value":"","description":"","styles":{"fontFamily":"default","fontSize":"default","fontStyles":[0,0,0]}},"_persistable":true,"required":true,"restriction":"no","styles":{"label":{"color":"default","backgroundColor":"default"},"value":{"color":"default","backgroundColor":"default"},"description":{"color":"777777","backgroundColor":"default"}}}
[sequence] => 0
[status] =>
)
[1] => Array
(
[id] => null
[name] => f1name
[type] => f1type
)
)
)