Php 转换包含多维数组键和值的字符串
我使用TPPPhp 转换包含多维数组键和值的字符串,php,arrays,regex,stdclass,recursive-backtracking,Php,Arrays,Regex,Stdclass,Recursive Backtracking,我使用TPPAPI检查域可用性和域注册,但我收到字符串中的响应 获取会话,返回字符串OK:t73484678463765 域检查,返回字符串woohoo123.nz:确定:最小值=1,最大值=2 在另一种情况下,返回字符串woohoo123.nz:ERR:102,这是消息 当它返回OK时,它在child中有&,但当ERR时,它有, 我想将返回的字符串转换为数组 [ 'woohoo123.nz' => [ 'OK' => [ 'M
API
检查域可用性和域注册,但我收到字符串中的响应
获取会话,返回字符串OK:t73484678463765
域检查,返回字符串woohoo123.nz:确定:最小值=1,最大值=2
在另一种情况下,返回字符串woohoo123.nz:ERR:102,这是消息
当它返回OK
时,它在child中有&
,但当ERR
时,它有,
我想将返回的字符串
转换为数组
[
'woohoo123.nz' => [
'OK' => [
'Minimum' => 1,
'Maximum' => 2,
]
]
]
[
'woohoo123.nz' => [
'ERR' => [
'code' => 102,
'message' => 'This is message',
]
]
]
例如输入woohoo123.nz:OK:Minimum=1&Maximum=2
,然后输出array
[
'woohoo123.nz' => [
'OK' => [
'Minimum' => 1,
'Maximum' => 2,
]
]
]
[
'woohoo123.nz' => [
'ERR' => [
'code' => 102,
'message' => 'This is message',
]
]
]
输入woohoo123.nz:ERR:102,这是消息
,并在数组
[
'woohoo123.nz' => [
'OK' => [
'Minimum' => 1,
'Maximum' => 2,
]
]
]
[
'woohoo123.nz' => [
'ERR' => [
'code' => 102,
'message' => 'This is message',
]
]
]
我更喜欢重用代码,我更喜欢递归
和回调
,但不确定在这种情况下。不确定这是否是您要找的。它适用于您的示例,但仅当输入字符串严格遵循该格式时才会继续工作
function stringToArray($inputStr) {
$array = [];
$topComponents = explode(': ',$inputStr);
$parametersStr = $topComponents[count($topComponents) -1];
if (strpos($parametersStr,'&') !== FALSE) {
$tmpArr = explode('&',$parametersStr);
foreach ($tmpArr as $val) {
$comp = explode('=',$val);
$array[$comp[0]] = $comp[1];
}
} else if ($topComponents[count($topComponents) - 2] === "ERR") {
$tmpArray = explode('ERR: ',$parametersStr);
$tmpArray = explode(', ',$tmpArray[0]);
$array = [
"code" => intval($tmpArray[0]),
"message" => $tmpArray[1]
];
} else {
$array = $parametersStr;
}
for ($i=count($topComponents) -2; $i >= 0; $i--) {
$newArray = [];
$newArray[$topComponents[$i]] = $array;
$array = $newArray;
}
return $array;
}
print_r(stringToArray("OK: t73484678463765"));
我不确定你想要什么。您能给出一些可能的字符串输入和所需的array
/stdClass
输出的示例吗?我想将这些字符串转换为array。字符串包括:
,&
和,
并转换为多维数组@HurricaneDevelopment我已经重写了函数。这几乎只是针对这个特定的案例。让我知道它是否适合你。这就是我想要的。谢谢你的时间!