2012-03-05 15 views
0

私は解析する必要のある文字列を持っていて、json_decodeまで実行します。私のコードは以下の通りです。現在、json_decodeを使用することはできません。なぜなら、jsonの複数のインスタンスを持つ文字列を正しく解析できないため、preg_match_allを{}、{}、{}のように分割する必要があります。jsondecodeのすべてをpregに一致させる方法

CODE

$source = getHTML($URL); //get page source with curl 
preg_match('/var\smessages\s\=\s\[(.*?)\]\;/', $source , $json); 

echo $json_final = json_decode($json[0]); 
echo $json_final_2 = json_decode($json[1]); 
+0

あなたは[]あまりにもpreg_match' 'でグループを使用しないのはなぜ?したがって、 'json_decode'を使用して配列を取得できます。 –

+0

@David Rodriguesもjsonデータの複数のセットを用意していますので、「json_decode」で読み取ることはできません。 – jeff

+0

必要なものがあるかどうかを確認してください。http://codepad.viper-7.com/w33ykR –

答えて

0

あなたはあまりにもグループで[]を受け入れ、preg_match_all使用することができます(正規表現:/var\smessages\s\=\s(\[.*?\])\;/)。したがって、array[1](の後)にゼロ以上の有効な文字列構文があります。あなたは、この値を呼び出すために

さて、あなたはforeachを使用することができます。json_decodeは、第2引数にtrueを受けること

foreach($json[1] as $messages) { 
    $messages = json_decode($messages, true); 
    foreach($messages as $message) { 
     // Do what you need with the message here! 
     echo "{$message[CreationTime]}: {$message[MessageText]}<br />"; 
    } 
} 

注意を。この関数は、オブジェクト(stdClass)の代わりに配列を返す必要があると言います。

は見てみましょう:http://codepad.viper-7.com/XtAiBH

関連する問題