Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php HTML实体转换非常奇怪_Php_Html_String_Model View Controller_Smarty - Fatal编程技术网

Php HTML实体转换非常奇怪

Php HTML实体转换非常奇怪,php,html,string,model-view-controller,smarty,Php,Html,String,Model View Controller,Smarty,我正在从事一个涉及修改一些现有代码的项目,但有一种行为对我来说毫无意义。我希望有人看到了类似的情况,从而能够提供一些关于问题来源的见解 我能举的最好的简短例子如下: A user enters "This & that" into a textarea on an input form and when saved once it becomes: "This & that", when it is saved again it becomes: "This

我正在从事一个涉及修改一些现有代码的项目,但有一种行为对我来说毫无意义。我希望有人看到了类似的情况,从而能够提供一些关于问题来源的见解

我能举的最好的简短例子如下:

A user enters "This & that" into a textarea on an input form and when saved 
once it becomes: "This & that", when it is saved again it becomes:  
"This & that", save it again and you get: 
"This & that".
很明显,每次保存后问题都会变得更糟。数据库(MySQL)中实际存储的数据是上面显示的文本,前端没有用于转换字符/实体的过滤器。显然,如果它们被正确地存储,调用htmlspecialchars_decode()将非常容易,但这还不是一个选项

是否有一些前端检查,我可以做,看看那里的符号正在被破坏?我正在查看处理数据的控制器,它使用rest事件来执行此操作,但我在哪里看不到任何可能尝试转换HTML实体的内容,更不用说错误转换它们的内容了


正如我在介绍中所说的,我希望有人以前看到过这一点,并能帮助确定它可能发生的地方。这是使用PHP(Protean,MVC框架)构建的,Propel,patforms/smarty正在使用,MySQL(通过PDO)在后端,jQuery用于大多数与JS相关的东西。

您的数据被
htmlentities()
多次访问。这是一个常见的无意义的错误,通常涉及到在发送到数据库之前对数据进行URL编码,然后在检索时对其再次编码。一次(输出)就足够了。你永远不应该对它进行编码。

我不想在这里回答我自己的问题,但事实上,它是埋在框架中的一组方法的bi产物,导致了双重编码。我稍微改变了数据流,现在所有的东西都被正确地存储了,现在我可以在输出周围抛出一个htmlspecialchars_decode(),生活很好

谢谢大家的建议


--N

如何准确地存储数据并在文本输入中重新填充?这实际上与Smarty有关吗?或者该标记对问题没有意义?数据是使用rest事件存储的(存储post数据),然后Smarty只是输出DB中的数据。数据保存时肯定会出现问题,因为垃圾编码在数据库中。奇怪的是,如果我输出表单处理程序正在处理的内容,“This&that.”会变成“This&that.”,这很好,但数据库显示“This&that.”-->这听起来像是在数据库级别发生的吗?谢谢。这就是我输入太快所得到的结果=PI同意,在输入之前进行编码是非常不必要的,并且会导致类似这样的问题。我可以保证这不会在输出时被解码,所以问题更大。我希望使用过这种框架/等组合的人以前看到过这一点,也许是推动PDO的本地产品。我还在挖,希望很快有解决办法。