wordpress sanitize array?

时间:2011-08-02 作者:FLX

我有一个自定义的post表单,它将数据发送到使用wp\\u insert\\u post创建post的页面。我可以轻松清理大多数数据,但我的标记有一些问题,我在数组中检索:

$tags =  $_POST[\'tags\'];
在将这些标记用作tags\\u输入之前,如何成功清理所有名称?

谢谢

4 个回复
最合适的回答,由SO网友:FLX 整理而成

如果有人感兴趣,我可以这样解决:

        $tags = $_POST[\'tags\'];
        if (count($tags) > 5){
            echo \'Niet meer dan 5 tags\';
            $stop = true;
        }

        if (is_array($tags)) {
            foreach ($tags as &$tag) {
                $tag = esc_attr($tag);
            }
            unset($tag );
        } else {
            $tags = esc_attr($tags);
        }

SO网友:chrisguitarguy

这里有一种使用PHP的方法array map 功能:

// Good idea to make sure things are set before using them
$tags = isset( $_POST[\'tags\'] ) ? (array) $_POST[\'tags\'] : array();

// Any of the WordPress data sanitization functions can be used here
$tags = array_map( \'esc_attr\', $tags );

SO网友:Broshi

我需要一个递归的卫生设施,所以我的解决方案是:

/**
 * Recursive sanitation for an array
 * 
 * @param $array
 *
 * @return mixed
 */
function recursive_sanitize_text_field($array) {
    foreach ( $array as $key => &$value ) {
        if ( is_array( $value ) ) {
            $value = recursive_sanitize_text_field($value);
        }
        else {
            $value = sanitize_text_field( $value );
        }
    }

    return $array;
}

SO网友:Lenin Zapata

几乎所有情况下都可以使用此功能。

/**
 * Recursive sanitation for text or array
 * 
 * @param $array_or_string (array|string)
 * @since  0.1
 * @return mixed
 */
function sanitize_text_or_array_field($array_or_string) {
    if( is_string($array_or_string) ){
        $array_or_string = sanitize_text_field($array_or_string);
    }elseif( is_array($array_or_string) ){
        foreach ( $array_or_string as $key => &$value ) {
            if ( is_array( $value ) ) {
                $value = sanitize_text_or_array_field($value);
            }
            else {
                $value = sanitize_text_field( $value );
            }
        }
    }

    return $array_or_string;
}

结束

相关推荐