我在解码来自数据库的数据时遇到了一些问题。
我的数据以utf8的形式存储在数据库中,对于这个例子,数据是'腐蚀&时间',存储为'腐蚀&
时间'。现在我想用这些数据填充表单的一个字段,这个字段应用了一个htmlSpecialChars过滤器。
在浏览器中查看时,我看到:
'腐蚀&
时间'
如果我使用html_entity_decode,我会得到:
'腐蚀$amp;
时间'
如果我也从表单中删除过滤器,那么得到: '腐蚀&时间'
无论如何我可以填充表单而不从字段中删除过滤器吗?
答案 0 :(得分:0)
在填充表单之前,您必须解码数据,过滤器不应该应用于来自表单的数据,直到它被发布,这将在调用getValues()
时重新应用过滤器。
如果您知道使用htmlspecialchars
对数据进行编码,请使用htmlspecialchars_decode
对数据进行解码。
Description
string htmlspecialchars_decode ( string $string [, int $quote_style = ENT_COMPAT ] )
This function is the opposite of htmlspecialchars(). It converts special HTML entities back to characters.
The converted entities are: &, " (when ENT_NOQUOTES is not set), ' (when ENT_QUOTES is set), < and >.
答案 1 :(得分:-1)
我认为一个好的解决方案是create a custom Zend_Filter。在自定义过滤器中,使用htmlspecialchars_decode()将&
之类的内容转换回&
。