Laravel如何验证字符串?

时间:2019-01-11 05:11:59

标签: laravel validation

当我使用Laravel的字符串验证规则时,它到底在做什么?例如,它只是运行php的is_string()方法还是使用filter_var()常量运行FILTER_VALIDATE_REGEXP

第二,如何使用Laravel剥离标签?

3 个答案:

答案 0 :(得分:2)

  

当我使用Laravel的字符串验证规则时,它到底在做什么?

使用Laravel的字符串验证规则时,它只会检查验证字段是否为字符串类型

https://laravel.com/docs/5.0/validation#rule-string

  

如何使用Laravel剥离标签?

您可以使用 strip_tags()函数:

http://php.net/manual/en/function.strip-tags.php

答案 1 :(得分:2)

使用Laravel的字符串验证时,以下函数将被调用

protected function validateAttribute($attribute, $rule) { ... }

您可以在其中找到

  

vendor / laravel / framework / src / Illuminate / Validation / Validator.php

如果您检查该方法,就会发现这段代码

$method = "validate{$rule}";

if ($validatable && ! $this->$method($attribute, $value, $parameters, $this)) {
    $this->addFailure($attribute, $rule, $parameters);
}

这将称为特征Concerns\ValidatesAttributes

/**
 * Validate that an attribute is a string.
 *
 * @param  string  $attribute
 * @param  mixed   $value
 * @return bool
 */
public function validateString($attribute, $value)
{
    return is_string($value);
}

要剥离标签,您可以使用PHP的strip_tags方法

答案 2 :(得分:1)

  

您可以尝试

这是我在当前项目中使用的一些验证,它基于用户输入。

$user_name = $request->get('username');
$user_email = $request->get('email');
$user_password = $request->get('password');
   if (!preg_match("/^[a-zA-Z0-9]*$/", $username)) {
      return abort(403, 'Username should be alphanumeric');
   }
   if(strlen($username) < 3 || strlen($username) > 25){
      return abort(403, 'Username should be minimum 3 and max 25 characters');
   }
   if(!filter_var($email, FILTER_VALIDATE_EMAIL)) {
      return abort(403, 'Invalid Email Format,eg abc@xyz.com');
   }
   if(strlen($password) < 6){
      return abort(403, 'Password should be minimum six characters');
   }

推荐https://laravel.com/docs/5.7/validation

要在laravel中剥离标签,可以在代码中使用 strip_tags() 函数。strip_tags()函数从HTML,XML和PHP标记中剥离字符串。 HTML注释总是被剥离。这不能使用allow参数更改。此函数是二进制安全的。