json 値を外部ファイルに追加しています。フォーム データは ajax および post 変数でキャプチャされます。私は、json データ文字列を展開し、途中 (または実際には最後) のポスト変数と一緒にファイルを内破しようとする小さなスクリプトを持っています。
<?php
$json_file = "data.json";
$json_data = $_POST["newUpload"]."]}";
//something like {"name":"foo","email":"foo@bar.com"}
$fh = fopen($json_file, 'r+'); //I think this is the problem???
$data = fread($fh, filesize($json_file));
$jsonFrags = explode("]}",$data);
$new_data = implode($json_data,$jsonFrags);
fwrite($fh, $new_data);
fclose($fh);
?>
これは、XAMPP を実行している Web サイトと、インターネット アクセスが非常に制限された Windows マシンでユーザーのリストを増やすことを許可する、私が思いついた最も簡単な方法でした。一日一回か二回。
JSON 全体は次のようになります。
{"uploads": [{"name":"foo","email":"foo@bar.com","imgurl":"http://placehold.it/50x50"}]}
ファイルデータを読み込み、$data
ファイル文字列「]}」の末尾で展開します。そうすれば、常に最後に追加されます。しかし、爆発/内破して問題が発生することはありません。str_replace を使用して同じ結果を得ることができます。上記の PHP スクリプトを実行すると、data.json に次のように表示されます。
{"uploads": [{"name":"foo","email":"foo@bar.com","imgurl":"http://placehold.it/50x50"}]}{"uploads": [{"name":"bar","email":"bar@foo.com","imgurl":"http://placehold.it/100x100"}]}
fopen の引数を変更して異なる結果を得ることができましたが、どれも私が望んでいた結果ではありません。何か案は?