【问题标题】:Which validation rule to use for a float with Laravel 4?使用 Laravel 4 进行浮点数的验证规则是什么?
【发布时间】:2014-04-06 21:54:04
【问题描述】:

我有一个包含两个必须为浮点数的文本输入的表单(具体来说,这些文本输入用于geographic coordinates),查看documentation 并找到integernumeric 的规则,但不适用于@ 987654325@.

我正在考虑使用“数字”,因为文本输入被禁用,并且该值仅在地图上的标记移动时才会更改。

验证浮点数的最佳方法是什么?

【问题讨论】:

    标签: php validation laravel


    【解决方案1】:

    您可以为此使用正则表达式规则 (regex:pattern),并且由于您想使用来验证 Geographic Coordinates,那么您应该使用正则表达式规则,因为 Geo Coord 可能看起来像 23.710085, 90.406966,它是Dhaka Bangladesh 的坐标(经纬度),它也可能包含像-33.805789,151.002060 这样的坐标。所以这里是语法:

    $rules = array('form_field_name' => 'required|regex:pattern' );
    

    或者只是

    $rules = array('form_field_name' => 'regex:pattern' );
    

    所以,模式应该是这样的/^[+-]?\d+\.\d+, ?[+-]?\d+\.\d+$/。所以,最后,它应该看起来像这样 (pattern is copied from internet):

    $rules = array('form_field_name' => 'regex:/^[+-]?\d+\.\d+, ?[+-]?\d+\.\d+$/');
    

    检查Laravel Validation (regex)

    【讨论】:

    • 我认为正则表达式是我接下来要学习的东西,它们似乎非常有用。
    • @Isaias,是的,它在某些情况下真的很有用,很高兴它对你有所帮助。
    【解决方案2】:

    numeric 规则可以用于此,因为它使用is_numeric() 函数来测试值。虽然,通常你会想要使用is_float() 函数的东西,因为表单输入是表单或字符串,所以应该使用is_numeric()。这是PHP doc for is_float的引述:

    测试一个变量是数字还是数字字符串(比如form 输入,它总是一个字符串),你必须使用 is_numeric()。

    【讨论】:

      【解决方案3】:
              'latitude' => 'regex:/^-?\d{1,2}\.\d{6,}$/',
              'longitude' => 'regex:/^-?\d{1,2}\.\d{6,}$/',
      

      【讨论】:

        【解决方案4】:
        Validator::extend('gps', function($attribute, $value, $parameters) {
        
                if (preg_match('/^-?\d{1,2}\.\d{6,}\s*,\s*-?\d{1,2}\.\d{6,}$/', $value)) {
                    return true;
                } else {
                    return false;
                }
            });
        

        【讨论】:

          猜你喜欢
          • 2016-11-22
          • 2014-05-08
          • 2015-02-03
          • 1970-01-01
          • 2014-11-29
          • 1970-01-01
          • 2021-12-25
          • 2014-07-26
          • 2015-02-21
          相关资源
          最近更新 更多