private function clearVars(mixed $source): mixed
{
if (is_array($source)) {
foreach ($source as $key => $value) {
$source[$key] = $this->clearVars($value);
}
}
if (is_object($source)) {
foreach ($source as $property => $value) {
$source->{$property} = $this->clearVars($value);
}
}
return is_string($source) ? htmlspecialchars($source) : $source;
}
Есть мнение, что всё это поделие можно заменить на
array_walk_recursive
.
Правильно ли такое мнение и если это так, то как это всё тогда будет выглядеть?
Я пробую, но получаю ошибку:
$array = [
'a' => [
'b' => '<script>alert("XSS")</script>'
]
]; // останется ли после array_walk_recursive структура 'a' => ['b' => '<script>alert("XSS")</script>']?
array_walk_recursive($array, 'htmlspecialchars'); // htmlspecialchars(): Argument #2 ($flags) must be of type int, string given
var_dump($array);
И ещё вопрос: разве после
array_walk_recursive
сохранится структура массива (мне нужно сохранение структуры массива)?