2016-08-26 7 views
2

私はチェックドメインの利用可能性とドメイン登録にTPP APIを使用しますが、私はstringで応答を受け取ります。多次元配列のキーと値を含む文字列を変換するPHP

  1. セッション、返される文字列OK: t73484678463765

  2. ドメインチェック、戻り値の文字列以外の場合にはwoohoo123.nz: OK: Minimum=1&Maximum=2

  3. 、返される文字列を取得し、それが&を持ってOKを返す

woohoo123.nz: ERR: 102, This is message

お子様の場合は ERRそれは私が好き array

[ 
    'woohoo123.nz' => [ 
     'ERR' => [ 
      'code' => 102, 
      'message' => 'This is message', 
     ] 
    ] 
] 

array

[ 
    'woohoo123.nz' => [ 
     'OK' => [ 
      'Minimum' => 1, 
      'Maximum' => 2, 
     ] 
    ] 
] 

入力woohoo123.nz: ERR: 102, This is messageと出力次string

arrayに、このような入力 woohoo123.nz: OK: Minimum=1&Maximum=2、出力としてリターンを変換したい ,

を持っているその時もっと再利用コードでは、私はrecursivecallbackを好んでいますが、この場合はわかりません。

+0

私はあなたが望むものが不明です。可能な文字列入力と 'array' /' stdClass'出力のいくつかの例をあなたは望みますか? –

+0

これらの文字列を配列に変換したいです。文字列には ':'、 '&'と '、'が含まれ、多次元配列@HurricaneDevelopmentに変換されます –

+0

関数を書き直しました。この特定のケースでは、かなり多くの場合です。それがあなたのために働くかどうか私に教えてください。 –

答えて

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")); 
+0

これは私が欲しいものです。御時間ありがとうございます! –

関連する問題