codeigniter表单验证

cal*_*ett 2 forms validation codeigniter

我有使用codeigniter框架的以下php代码

$this->form_validation->set_rules('money', 'Money', 'integer|required|xss_clean');
Run Code Online (Sandbox Code Playgroud)

它将货币字段验证为整数.如何将字段验证为整数或十进制数.

我猜这会很简单

$this->form_validation->set_rules('money', 'Money', '(decimal||integer)|required|xss_clean');
Run Code Online (Sandbox Code Playgroud)

但它不起作用!

Wes*_*rch 7

从CI 表单验证文档:

注意:您还可以使用允许一个参数的任何本机PHP函数.

is_numeric() 可以为你工作,但它接受一些非常不同的格式.

is_float() 会工作,除了它会在字符串和整数上失败.

这两个函数在验证通常作为货币值接受的数字整数或小数时也过于宽松.内置CI decimal()函数需要小数点和允许+-字符.

是的,我知道 - 没有帮助,但希望它会让你思考.您想要使用的语法根本不起作用.我建议您通过扩展Form_validation库来创建自己的表单验证规则来验证资金.

创建文件 /application/libraries/MY_Form_validation.php

像这样的东西:

class MY_Form_validation extends CI_Form_validation {

    function is_money($input = '')
    {
            // Validate input here and return TRUE or FALSE
    }

}
Run Code Online (Sandbox Code Playgroud)

我最初写了一个破碎的例子,然后我尝试写一些有用的东西,并意识到这取决于你.您可能会或可能不希望允许像字符$,,-,+,或超过两个地方小数,或者只有一个地方一个小数,或在数字逗号分隔千......无论使用哪种验证方法,你认为合适的.

这里有一个关于货币格式验证的好例子:如何检查输入的值是否为货币