PHP: как (правильно) удалить завершенные кавычки в массивах, когда Волшебные Кавычки идут

Поскольку Вы знаете, когда Волшебные Кавычки идут, одинарных кавычек оставляют в значениях и также в ключах. Большинство решений удалить Волшебные Кавычки во времени выполнения только не выходит из значений, не ключей. Я ищу решение, которое не выйдет из ключей и значений...

Я узнал на PHP.net эту часть кода:

$process = array(&$_GET, &$_POST, &$_COOKIE, &$_REQUEST);
while (list($key, $val) = each($process))
{
    foreach ($val as $k => $v)
    {
        unset($process[$key][$k]);
        if (is_array($v))
        {
            $process[$key][stripslashes($k)] = $v;
            $process[] = &$process[$key][stripslashes($k)];
        }
        else
        {
            $process[$key][stripslashes($k)] = stripslashes($v);
        }
    }
}
unset($process);

Но мне не нравится "и" ссылки и массивы, когда я получил ошибки как этот в прошлом...

Существует ли "лучший" способ не выйти из Волшебных Кавычек (ключи и значения) во времени выполнения, чем то выше?

7
задан Bryan M. 25 January 2010 в 15:05
поделиться

2 ответа

Я думаю, что это немного очиститель и избегает ссылочных ошибок:

function unMagicQuotify($ar) {
  $fixed = array();
  foreach ($ar as $key=>$val) {
    if (is_array($val)) {
      $fixed[stripslashes($key)] = unMagicQuotify($val);
    } else {
      $fixed[stripslashes($key)] = stripslashes($val);
    }
  }
  return $fixed;
}

$process = array($_GET,$_POST,$_COOKIE,$_REQUEST);
$fixed = array();
foreach ($process as $index=>$glob) {
  $fixed[$index] = unMagicQuotify($glob);
}
list($_GET,$_POST,$_COOKIE,$_REQUEST) = $fixed;
7
ответ дан 7 December 2019 в 10:02
поделиться
array_walk_recursive($_POST, 'stripslashes');

Сделайте то же самое для получения и cookie.

-1
ответ дан 7 December 2019 в 10:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: