2

APIドメインの可用性の確認とドメイン登録にTPP を使用していますが、応答が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',
         ]
     ]
 ]

私はコードを再利用するほうが好きですがrecursivecallbackこの場合はよくわかりません。

4

1 に答える 1

1

これがあなたが探しているものかどうかは 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"));
于 2016-08-26T03:41:31.097 に答える