データベースを使用する PHP コードを書いています。そのために、配列をハッシュマップとして使用します。DB にコンテンツが追加または削除されるたびに、ファイルに保存します。
私は自分の DB 構造によってこの方法を使用することを余儀なくされており、mysql やその他の標準 DB を使用することはできません (学校のプロジェクトなので、構造はそのままです)。
私は2つの機能を構築しました:
function saveDB($db){
$json_db = json_encode($db);
file_put_contents("wordsDB.json", $json_db);
} // saveDB
function loadDB(){
$json_db = file_get_contents("wordsDB.json");
return json_decode($json_db, true);
} // loadDB
エンコード後またはファイルからの読み込み後に取得した文字列をエコーすると、有効な json が返されます (json ビューアーでjson_decode()
テストしましたvar_dump()
)。
json 文字列自体は非常に長いです (~200,000 文字、これはテスト用です)。
私は次のことを試しました:
- 単一/二重引用符を二重/単一引用符に置き換えます (バックスラッシュなしで、1 つのバックスラッシュと 3 つのバックスラッシュを使用します。また、元の文字列と置換された文字列でバックスラッシュの数が異なると考えられる任意の組み合わせ)、手動と
str_replace()
. - json 文字列の前後に引用符を追加します。
- ページのエンコーディングを変更します。
- ファイルに保存せずにデコードします (エンコード直後)。
- スラッシュとバックスラッシュをチェックしました。何も見つかりません。
- 試してみ
addslashes()
ました。 - さまざまな「エスケープ文字列」バリアントを使用してみました。
json_last_error()
動作しません。エラー番号が表示されません (0 ではなく null を取得します)。
これは私のサーバーではないため、使用されている PHP のバージョンがわからず、何もアップグレード/ダウングレード/インストールできません。
小さい弦はうまく機能するように見えるので、サイズが関係していると思います。
みんなありがとう:)