0

我没有找到真正的解决方案。和其他许多人一样,我现在使用 jquery wysiwyg 编辑器并将输出保存在 mysql 中。当我重新加载到编辑器并再次保存时,就会出现问题。每次按提交时,反斜杠和“标记都会增加。当然,在写入数据库之前,我会执行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);
}

有人有想法吗?谢谢

4

1 回答 1

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/

于 2011-08-15T00:25:58.827 回答