一重引用符で JSON エンコーディングが失敗する: PHP の謎
PHP の json_encode 関数を使用して stdClass オブジェクトを JSON に変換すると、次のような問題が発生する可能性があります。不可解な失敗により、資産価値が失われます。この問題を調査し、解決策を見つけてみましょう。
指定された例は、次の動作を示しています。
<code class="php">$post = new stdClass(); $post->post_title = "Alumnus' Dinner Coming Soon"; // note the single quote $json = json_encode($post); echo $json; // outputs {"ID":"12981","post_title":null,"post_parent":"0","post_date":"2012-01-31 12:00:51"}</code>
一重引用符の書式設定の問題により、結果として得られる JSON には「post_title」プロパティがありません。 JSON の仕様では、プロパティ キーまたは値内で一重引用符を使用できないことが規定されており、json_encode はこれに厳密に従っています。
これを解決するには、次の手順に従います。
1. UTF-8 エンコーディングを確認します:
データを適切に取得するには、データベース接続で UTF-8 エンコーディングを指定する必要があります。接続方法に応じて:
2 を実行します。一重引用符のデコード:
文字エンコードの問題が発生した場合は、一重引用符を明示的にデコードすることを検討してください。データベースが "post_title" に対して "Alumnus? Dinner Coming Soon" を返したとします:
<code class="php">$post->post_title = str_replace("\x92", "'", $post->post_title);</code>
これにより、誤った文字が有効な一重引用符に変換され、適切な JSON エンコードが保証されます。
以上がプロパティ値に一重引用符があると PHP の「json_encode」が失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。