2012-02-20 12 views
0

私はそのようなsthが* .txtファイル内にあります。jsonの内部関数、(PHPの解析)

function_name({"one": {"id": "id_for_one", "value": "value_for_one"}, ...}); 

そして、私はこのようなファイルを取得しています:

$source = 'FILE_NAME.txt'; 
$json = json_decode(file_get_contents($source),true); 
echo $json['one']['value']; 

それは動作しませんが、私はfunction_name();を削除するとそれが動作します。 これらの文字列を削除せずに解析するにはどうすればよいですか?

+2

'function_name()'とは何ですか? – entropid

+0

あなたは何を達成しようとしていますか? –

+0

これはJSコールバック関数でなければなりません。 –

答えて

0

テキストファイルの関数は、jsonファイルではないことを意味します。

正規表現を使用して文字列を削除すると、問題は解決します。

機能が固定された名前で、このような何かを行う場合は、次の

$source = 'FILE_NAME.txt'; 
$json_content = str_replace('function_name(', '', file_get_contents($source)); 
$json_content = substr($json_content,0,-2); 
$json = json_decode($json_content,true); 
echo $json['one']['value']; 
+0

JSONに 'function_name'も表示されたらどうしますか? –

+0

JSONの内部にある場合、文字列になります。またはあなたのオブジェクトを無効にし、無効な場合はJSONでもありません。この記事で見てくださいhttp://www.json.org/ –

1

できません。これらは有効なJSONではありません。それらを除いた部分文字列を取ります。

1

これらの文字列を削除する必要があります。 function_name部分では有効なJSONではありません。

JSON文字列は通常、{(オブジェクト表記)または[(配列表記)で始まりますが、文字列や数値などのスカラー値でもかまいません。最初に文字列が有効なJSONであることを確認せずに解析することはできません。

+0

JSONをオブジェクトまたは配列に囲む必要はありません。 –

1

あなたは、ファイル内の文字列を取得しようとJSONファイルとしてそれをデコードしています。

'function_name'は有効なJSON文字列ではなく、残りは「はい」です。

1

これらの文字列を削除せずに解析するにはどうすればよいですか?

方法はありません。
これはうまくいくはずです。個々の文字にアクセスするための文字列の

$data = file_get_contents($source); 
$data = substr($data, strlen("function_name(")); 
$data{strlen($data)-1}=$data{strlen($data)-2}=" "; 
$json = json_decode($data,true); 

両方{}[]作品。