Преобразование строки, содержащей ключи многомерного массива и значения переполнения стека

Я использую ТЭС API для проверки доступности домена и регистрации домена, но я получаю ответ в string,

  1. Получить сессию, вернуть строкуOK: t73484678463765

  2. Проверка домена, возвращаемая строка woohoo123.nz: OK: Minimum=1&Maximum=2

  3. В другом случае возвращаем строку 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 но не уверен в этом случае.

2

Решение

Не уверен на 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"));
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]