1

MongoDB と PHP を数か月間使用しています。私はいくつかの新機能についていくつかのテストを行っていますが、突然 MongoDB の動作がおかしくなりました。データベースに挿入すると、文字列の最初の文字が切り捨てられます。私のコードは変更されていません。結果だけですか? 詳細と呼ばれるテキストフォームがあります。送信してコレクションに挿入すると、詳細エントリがすべて厄介になります。フォームに「トマト」と入力すると、次のメッセージが表示されます。

PHPエコーから(挿入後のエントリのクエリから構築):

"omato"

私が受け取ったMongo Shellから:

"Details" : ""

私が受け取るAPIリクエスト(エコーJSON)から:

"Details" : "\u0000omato"

これを引き起こしている原因について何か考えはありますか?

4

1 に答える 1

1

何らかの理由で文字列に文字を追加したようです\0。3 つの異なるツールは、これをすべて異なる方法で処理します。

  1. PHP の echo は単に表示するだけなので、表示されません。次のような方法で出力をストリーミングするとhexdump、キャラクターが表示されます\0

  2. mongo シェルは、\0文字に遭遇すると表示を切り詰めるため、何も表示されません。

  3. \0PHP の JSON エンコーダーは、文字を "\u0000" としてエンコードします。

于 2012-06-15T21:49:05.687 に答える