Php 验证Laravel 5中的阿拉伯数字

Php 验证Laravel 5中的阿拉伯数字,php,validation,laravel-5,Php,Validation,Laravel 5,我有一个表单,其中包含一个字段,供用户输入特定付款的金额值。此字段为输入类型编号 Laravel中此输入的验证规则为: 'amount' => 'required|numeric' 当我以英文输入金额时:1500=>验证通过,一切正常 但当我以阿拉伯语输入金额时:١٠٠=>验证失败,并显示以下错误消息: “验证。数字” 我应该手动验证此字段还是有其他解决方案 也许您可以创建自己的验证类型 您可以在app/Providers/AppServiceProvider.php中向引导方法添加类似

我有一个表单,其中包含一个字段,供用户输入特定付款的金额值。此字段为输入类型编号

Laravel中此输入的验证规则为:

'amount' => 'required|numeric'
当我以英文输入金额时:
1500=>
验证通过,一切正常

但当我以阿拉伯语输入金额时:
١٠٠=>
验证失败,并显示以下错误消息:

“验证。数字”

我应该手动验证此字段还是有其他解决方案


也许您可以创建自己的验证类型

您可以在
app/Providers/AppServiceProvider.php
中向引导方法添加类似的内容

Validator::extend('arabic_numbers', function ($attributes, $value, $parameters, $validation) {
  $arabic_numbers = [
    '٥',
    '١',
    // add more
  ];

  $input = $value;
  if (!$input) {
    return false;
  }
  $chars = preg_split('//u', $input, -1, PREG_SPLIT_NO_EMPTY);
  foreach ($chars as $char) {
    if (!in_array($char, $arabic_numbers)) {
      return false;
    }
  }

  return true;
});
您可以添加到现有规则中,例如,
必需的|阿拉伯数字

或者使用类似的方法:

$input = '١';
$validator = Validator::make([
    'user_input' => $input,
], [
    'user_input' => 'required|arabic_numbers'
];

if ($validator->fails()) {
    //
}
您还可以在许多其他方式中使用,例如在自定义请求中:

public function rules()
{
    return [
        'something' => 'required|arabic_numbers',
    ];
}

希望这能有所帮助。

谢谢您的回复。我的结论是:将阿拉伯数字转换成英文数字,然后应用普通的验证器“required | numeric”。