验证用户的小写输入

时间:2018-09-19 22:18:06

标签: php

使用此代码,如果用户输入所有大写字母,该代码将正常工作。但是,我需要自动接受小写和句子大小写作为用户的有效输入。目前,这行不通,有什么主意吗?

add_filter( 'gform_field_validation_17_4', 'custom_validation', 10, 4 );
function custom_validation( $result, $value, $form, $field ) {
    $arrWhitelist = array('KNITS10', 'KATNA20');
    if ( $result['is_valid'] && !in_array( $value, $arrWhitelist )) {
        $result['is_valid'] = false;
        $result['message'] = 'Incorrect code';
    }
    return $result;
}

2 个答案:

答案 0 :(得分:2)

使用strtoupper(),使用户输入与您输入的内容相符:

add_filter( 'gform_field_validation_17_4', 'custom_validation', 10, 4 );
function custom_validation( $result, $value, $form, $field ) {
    $arrWhitelist = array('KNITS10', 'KATNA20');
    if ( $result['is_valid'] && !in_array( strtoupper($value), $arrWhitelist )) {
        $result['is_valid'] = false;
        $result['message'] = 'Incorrect code';
    }
    return $result;
}

答案 1 :(得分:0)

您也可以使用strcasecmp(),但是在这种情况下,cleaner选项将更强大。

使用strcasecmp生成的代码为:

    function custom_validation($result, $value, $form, $field)
    {
        $arrWhitelist = array('KNITS10', 'KATNA20');
        array_walk(
            $arrWhitelist, function ($item) use ($value, $result) {
            if (strcasecmp($item, $value) === 0) {
                $result['is_valid'] = false;
                $result['message'] = 'Incorrect code';
            }
        }
        );
        return $result;
    }