我没有找到真正的解决方案。
现在我和其他许多人一样使用jquery所见即所得的编辑器并将输出保存在mysql中。当我加载回编辑器并再次保存时,会出现问题。每次按提交时,反斜杠和“标记都会增加。
在写入DB之前,我做了mysql_real_escape_string()
。
我递归使用strpslashes,但它不起作用。
function decodeEscapedString($value) {
if (get_magic_quotes_gpc()) {
$value = is_array($value) ?
array_map(array('self', 'decodeEscapedString'), $value) :
stripslashes($value);
return $value;
} else
return stripslashes($value);
}
有人有想法吗? THX
答案 0 :(得分:0)
我会说你有一个轻微的逻辑错误以及可能的参考错误,'self'
中有array_map()
。
假设这是一个类方法,请尝试这样的
public function filter($value)
{
return get_magic_quotes_gpc() ? $this->clean($value) : $value;
}
protected function clean($value)
{
return is_array($value) ? array_map(array($this, 'clean'), $value) : stripslashes($value);
}
然后您只需调用filter()
方法,例如
$value = $obj->filter($_POST['something']);
改编自http://blog.philipbrown.id.au/2008/10/zend-framework-forms-and-magic_quotes_gpc/