Выполнить htmlspecialchars на многоуровневом массиве

0

Я пытаюсь найти способ перебрать все мои данные и удалить все специальные символы HTML. Проблема заключается в том, что мои данные могут иметь значения, которые являются массивами, которые могут иметь 5 или 6 вспомогательных массивов. Может кто-то, пожалуйста, помогите мне с хорошим способом сделать это. Это код, с которым я работал до сих пор, но он пропускает все значения вспомогательных массивов.

    foreach($view['data'] as $key => $value){
        // Check if Array
        if(!is_array($value)){
            $view['data'][$key] = htmlspecialchars($value);
        }
    }
  • 0
    Возможно, вы хотите рекурсивную функцию ? В вашем конкретном случае, если у вас есть от 5 до 6 вложенных массивов (следовательно, динамических массивов), вы должны использовать рекурсивную функцию для цикла между ними. Проверьте это: php.net/manual/en/function.array-walk-recursive.php
Теги:
arrays
loops
htmlspecialchars

2 ответа

1
Лучший ответ

Вы можете использовать array_walk_recursive() - http://php.net/manual/en/function.array-walk-recursive.php

array_walk_recursive($view['data'], function(&$item) {
  $item = htmlspecialchars($item);
});
  • 0
    Вы забыли ответное заявление.
  • 0
    Я забыл параметр & функции. Вам не нужно возвращать заявление см. Php.net/manual/en/function.array-walk-recursive.php#106146
0

Вы хотите array_walk_recursive()

Как это:

 array_walk_recursive($view['data'], function($el){
     return htmlspecialchars($el);
 }); 

Ещё вопросы

Сообщество Overcoder
Наверх
Меню