带有闭包的php FILTER_CALLBACK

jba*_*ros 5 php filter

试图将一个闭包传递给filter_var_array(),但似乎无法使它工作.

$clean = function( $html ) {
    return HTML::sanitize( $html, array('p','ul','ol','li'), array('class','style') );
};
$args = array( 'filter' => FILTER_CALLBACK, 'options' => $clean );

$fields = filter_var_array(
    array( $_POST['field1'], $_POST['field2'], $_POST['field3'] ),
    array( 'field1' => $args, 'field2' => $args, 'field3' => $args )
);
Run Code Online (Sandbox Code Playgroud)

运行上面的操作后,$ fields是一个空数组.

注意,个别过滤工作正常:

$field1= filter_var( $_POST['field1'], FILTER_CALLBACK, array( 'options' => $clean ) );
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

Gor*_*don 4

您传入的值$_POST没有键,因此不会触发回调。只需传入整个$_POST数组即可,例如

$fields = filter_var_array(
    $_POST,
    array(
        'field1' => $args, 
        'field2' => $args, 
        'field3' => $args 
    )
);
Run Code Online (Sandbox Code Playgroud)