1

在 MongoDb 2.0.6 上,在 64 位上运行,带有官方驱动程序的 PHP 5.4。MongoDb save() 的

® 

存储为

® 

Mongo 显然把所有的 & into & amp; 从而在再次输出到浏览器时破坏 html 实体!存储“Bose®”工作正常,它存储为“Bose®”。这里发生了什么?我希望 MongoDb 停止更改我的数据。我故意存储 HTML 实体,例如

® 

避免此类问题,但 MongoDb 将其变成

&®

通过 PHP 在 save() 上?这是错误还是“功能”?

目前,我必须在 save() 到 MongoDb 之前对我的所有字符串/数据执行 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 回答