1

MongoDb 2.0.6 で、64 ビットで実行され、PHP 5.4 と公式ドライバー。MongoDb save() の

® 

として保存されます

® 

Mongo は明らかに all & into & amp; をマンジします。したがって、ブラウザに再度出力すると、html エンティティが壊れます。「Bose®」の保存は正常に機能し、「Bose®」として保存されます。ここで何が起こっているのですか?MongoDb にデータの変更をやめてもらいたい。私は故意に次のような HTML エンティティを保存します

® 

そのような問題を回避するために、MongoDb はそれを

&®

PHPを介してsave()で?これはバグですか、それとも「機能」ですか?

現在、MongoDb に save() する前に、すべての文字列/データを html_entity_decode() する必要があります...

4

1 に答える 1

2

MongoDB は、この方法でデータを変更していません。あなたのアプリケーションには、データを変更している何かがあります。

簡単なテスト プログラムを次に示します。

<?php

$conn = new Mongo();
$db = $conn->test;
$collection = $db->tb;

$collection->drop();
$collection->save( array( 'name' => ">>&reg;<<" ) ) ; 
$cursor = $collection->find();

foreach ($cursor as $doc) 
    print(" {$doc['name']} \n");

?>

実行すると、次の出力が生成されます。

 >>&reg;<< 

明らかに、ツールチェーン内の別の何かが HTML エンコーディングを実行しています。

于 2012-08-09T22:50:19.323 に答える