Php 还有一个问题

Php 还有一个问题,php,mysql,recursion,mysql-real-escape-string,stripslashes,Php,Mysql,Recursion,Mysql Real Escape String,Stripslashes,我没有找到真正的解决办法。 和其他许多人一样,我现在使用jquery所见即所得编辑器,并将输出保存在mysql中。当我加载回编辑器并再次保存它时,问题就出现了。每次按submit时,反斜杠和标记都会增加。 在写DB之前,我会做一个mysql\u real\u escape\u字符串 我递归地使用strpslashes,但它不起作用 function decodeEscapedString($value) { if (get_magic_quotes_gpc()) { $value

我没有找到真正的解决办法。 和其他许多人一样,我现在使用jquery所见即所得编辑器,并将输出保存在mysql中。当我加载回编辑器并再次保存它时,问题就出现了。每次按submit时,反斜杠和标记都会增加。 在写DB之前,我会做一个mysql\u real\u escape\u字符串

我递归地使用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

我想说,在数组映射中有“self”的地方,有一个轻微的逻辑错误和一个可能的参考错误

假设这是一个类方法,请尝试以下操作

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']);

改编自

至少在PHP5.4中不会有魔法引号。如果您已经控制了服务器,为什么不首先禁用魔法引号呢?这让一切都变得容易多了。