2016-08-26 6 views
2

Ich verwende TPP API für check Domain-Verfügbarkeit und Domain-Register, aber ich erhalte Antwort in string.Konvertieren von Zeichenfolge mit mehrdimensionalen Array-Schlüssel und Werte PHP

  1. Get Session, Return String OK: t73484678463765

  2. Domaincheck, Rückgabestring woohoo123.nz: OK: Minimum=1&Maximum=2

  3. In einem anderen Fall Rückgabestring woohoo123.nz: ERR: 102, This is message

wenn es OK Rückkehr hat & in Kind, aber wenn ERR dass die Zeit hat es ,

ich Rückkehr will string in array

wie Eingangs

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

Eingang woohoo123.nz: ERR: 102, This is message und Ausgang array

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

Ich mag folgende folgende arraywoohoo123.nz: OK: Minimum=1&Maximum=2 und Ausgang umwandeln mehr zu Code wiederverwenden, bevorzuge ich recursive und callback aber nicht sicher in diesem Fall.

+0

Ich bin unsicher was Sie wollen. Können Sie weitere Beispiele für mögliche String-Eingaben und die von Ihnen gewünschte 'array' /' stdClass'-Ausgabe geben? –

+0

Ich möchte diese Zeichenfolgen in Array konvertieren. String enthält ':', '&' und ',' und konvertiert in multidimensionales Array @HurricaneDevelopment –

+0

Ich habe die Funktion umgeschrieben. Es ist nur für diesen speziellen Fall. Lass es mich wissen, wenn es für dich funktioniert. –

Antwort

1

Nicht 100% sicher, ob Sie das suchen. Es funktioniert für Ihre Beispiele, funktioniert aber nur dann weiter, wenn die Eingabezeichenfolgen genau diesem Format folgen.

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

Das ist was ich will. Vielen Dank für Ihre Zeit! –

Verwandte Themen