Я использую ТЭС API
для проверки доступности домена и регистрации домена, но я получаю ответ в string
,
Получить сессию, вернуть строкуOK: t73484678463765
Проверка домена, возвращаемая строка woohoo123.nz: OK: Minimum=1&Maximum=2
В другом случае возвращаем строку woohoo123.nz: ERR: 102, This is message
Когда он вернется OK
она имеет &
у ребенка, но когда ERR
в этот раз ,
Я хочу конвертировать возврат string
в array
такие как ввод woohoo123.nz: OK: Minimum=1&Maximum=2
и выводит следующее array
[
'woohoo123.nz' => [
'OK' => [
'Minimum' => 1,
'Maximum' => 2,
]
]
]
вход woohoo123.nz: ERR: 102, This is message
и выводит следующее array
[
'woohoo123.nz' => [
'ERR' => [
'code' => 102,
'message' => 'This is message',
]
]
]
Мне больше нравится повторно использовать код, я предпочитаю recursive
а также callback
но не уверен в этом случае.
Не уверен на 100%, если это то, что вы ищете. Это работает для ваших примеров, но будет продолжать работать, только если входные строки строго следуют этому формату.
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"));
Других решений пока нет …