MongoDb将“®”等HTML实体复制到“& reg;”来自PHP的save()

时间:2012-08-09 20:50:09

标签: html mongodb character html-entities

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

的MongoDb save()
® 

存储为

® 

Mongo显然是在宣传所有&进入&放大器;从而在再次输出到浏览器时打破html实体!存储“Bose®”工作正常,存储为“Bose®”。这里发生了什么?我希望MongoDb停止改变我的数据。我有意识地存储像

这样的HTML实体
® 

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

&®

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

目前,我必须在保存()之前将所有字符串/数据执行html_entity_decode()到MongoDb ...

1 个答案:

答案 0 :(得分:1)

MongoDB NOT 以这种方式重置数据。您的应用程序中还有其他内容正在修改数据。

这是一个简单的测试程序:

<?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编码。