Zend Form在填充时解码数据



我在解码来自数据库的数据时遇到了一些问题。

我的数据以utf8的形式存储在数据库中,在这个例子中,数据是"腐蚀&时间",存储为"腐蚀&时间"。现在我想用这个数据填充表单的一个字段,这个字段应用了一个htmlSpecialChars过滤器。

在浏览器中查看时,我会看到:‘腐蚀&时间’

如果我使用html_entity_decode,我会得到:‘腐蚀$amp;时间’

如果我也从表单中移除过滤器,那么我得到:'腐蚀&时间

我是否可以在不从字段中删除过滤器的情况下填充表单?

在填充表单之前,您必须对数据进行解码,在表单发布之前,过滤器不应应用于来自表单的数据,这将在调用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 >. 

我认为一个好的解决方案是创建一个自定义的Zend_Filter。在自定义筛选器中,使用htmlspecialchars_decode()将&等内容转换回&

最新更新