另一个striplashes问题

时间:2011-08-15 00:15:24

标签: php mysql recursion mysql-real-escape-string stripslashes

我没有找到真正的解决方案。 现在我和其他许多人一样使用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

1 个答案:

答案 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/