2016-08-18 17 views
0

サーバーでJSON文字列をデコードする方法を次のように文字列を返します。結果のjson_decodeを呼び出すPHP:引用符

string(150) ""\"{ 'success': false, 
'message': Email address already registered, 
'error': { 'code': 100, 
      'message': 'Email address already registered!' }}\""" 

は、配列に文字列を変更しない、それだけで文字列のまま。

この文字列をPHP配列に変換するにはどうすればよいですか?

+1

元のjson文字列の前後に引用符がある場合、有効なjsonではありません。それは文字列です。引用符を取り除き、残っているものをjson_decodeしようとする可能性があります。 –

+0

@JonathanKuhn Ok、文字列の成功とメッセージの部分を読んでみたい。それは可能でしょうか? – Relm

+0

@Relm、もちろん、 'preg_match'はpreg_matchよりも簡単に – RomanPerekhrest

答えて

0

あなたはまだその文字列からsuccessmessageキーの値を取得する必要がある場合 - preg_match_allarray_combine機能で、次のアプローチを使用します。

$str = "\"{ 'success': false, 
'message': Email address already registered, 
'error': { 'code': 100, 
      'message': 'Email address already registered!' }}\""; 

preg_match_all("/'(?<k>success|message)':(?<v>[^,]+)(?=,)/", $str, $matches); 
$result = array_combine($matches['k'], $matches['v']); 

print_r($result); 

出力:

Array 
(
    [success] => false 
    [message] => Email address already registered 
) 
+0

あなたは私の一日の男を救った! – Relm

+0

@Relm、喜んで助けてください... – RomanPerekhrest

0

はこれを試してみてください。 !!!

 $string = ""\"{ 'success': false, 
     'message': 'Email address already registered', 
     'error': { 'code': 100, 
        'message': 'Email address already registered!' }}\"""; 

     $replace_hash_string = str_replace("\","",$string); 
     $final_string = str_replace('"""','',$replace_hash_string); 

     $converted_array = json_decode($final_string); 

     echo "<pre>"; 
     print_r($converted_array); 
     echo "</pre>"; 

希望があります。