drupal 7 – Cómo filtrar los valores de una matriz en drupal

Pregunta:

En drupal tenemos la función check_plain para filtrar los códigos no deseados de un texto, tengo una matriz que estoy almacenando directamente, en ese caso, necesito verificar cada valor antes de almacenar, ¿hay alguna función a la que podamos pasar la matriz y debería filtrar y restablecer la matriz.

Ex – Tengo un formulario donde los usuarios pueden agregar tantos nombres como quieran usando (campo de texto múltiple) el nombre del campo de texto es – garantes []

Entonces tengo una matriz donde toda la entrada del usuario está allí, para filtrar, necesito filtrar cada valor de la matriz usando foreach.

¿Existe una función o forma, de modo que pueda pasar directamente la matriz a una función y debería devolverme una matriz con valores seguros, es decir, cada valor debe analizarse utilizando la función check_plain?

Creo que un expample puede ayudarlo a responder mejor, aquí está mi matriz de ejemplo.

Array
(
[0] => Array
    (
        [keyword] => lucidus
        [color] => #00ff00
    )

[1] => Array
    (
        [keyword] => commoveo
        [color] => #998899
    )

[2] => Array
    (
        [keyword] => dolus
        [color] => #ff0099
    )

)

NOTA: la palabra clave y el color son valores de entrada del usuario. Y esos deben filtrarse, es y puede ser una matriz multidimensional.

Muchas gracias

Respuesta:

Esta es una pregunta antigua, pero todavía no parece haber una respuesta decente …

No existe una solución lista para usar, pero es fácil escribir una función que recorra la matriz de forma recursiva y aplique una función de filtro a las claves y valores.

<?php
function clean_array($array, $filter = 'check_plain') {
  $clean = array();
  foreach ($array as $key => $val) {
    if (is_array($val)) {
      $clean[$filter($key)] = clean_array($val, $filter);
    }
    else {
      $clean[$filter($key)] = $filter($val);
    }
  }
  return $clean;
}
?>

Esto también le brinda la flexibilidad de usar filter_xss o check_markup en su lugar.

Espero que ayude.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top

web tasarım