我正在研究一个涉及修改一些现有代码的项目,并且存在一种对我来说毫无意义的行为。我希望有人看到类似的东西,因此可以提供一些有关问题源于何处的见解。HTML实体转换非常奇怪
最好的简短的例子,我可以给如下:
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()但这不是一个选项呢...
是否有一些前端检查,我可以做,看看哪里符号正在被破坏?我正在查看处理数据的控制器,它使用休息事件来做这件事,但是我没有看到任何可以尝试转换HTML实体的东西,更不用说将不正确地转换它们的东西了。
正如我在介绍中所说的那样,我希望有人可能以前见过这个,并且可以帮助查明它可能发生的位置。这是使用PHP(Protean,MVC框架),Propel,patforms/smarty在后台,MySQL(通过PDO)在后端,jQuery为大多数JS相关的东西。
您究竟如何存储数据并将其重新填充到文本输入中?这实际上与Smarty有什么关系,或者这个标签对这个问题毫无意义? – 2012-01-16 22:19:26
使用休息事件(存储发布数据)存储数据,然后smarty仅输出数据库中的内容。由于垃圾编码在数据库中,所以在数据被保存时发生的问题绝对是一个问题。 – 2012-01-16 22:23:32
奇怪的是,如果我输出表单处理程序正在处理的内容“This&that”。变成“这&那。”这很棒,但数据库显示“This & amp; that。” - >这听起来像是发生在数据库级别吗? – 2012-01-16 22:26:14