检查输入中是否没有URL地址Laravel

时间:2018-05-01 09:48:25

标签: php laravel

我有2个社交帐户输入,我需要登录此社交帐户。我需要在此输入中拒绝写入链接。我怎么能这样做?

$this->validate($request, [
        'google_plus' => 'required|not:url',
        'twitter' => 'required|not:url',
    ]);

not:url无法正常工作..

示例:我需要拒绝链接:https://twitter.com/loginUser并且只允许:loginUser

3 个答案:

答案 0 :(得分:0)

您可以使用regex验证程序或创建一个custom validator来实施您之后的规则。

例如,regex:^https://twitter.com/.+之类的内容会验证以该域开头的输入。

答案 1 :(得分:0)

验证人的目的是在不符合要求的情况下停止提交。根据你所描述的内容,你不想停止提交,只是修剪它。

在这种情况下,不要在该字段上加上任何规则。将其保存到数据库时,请使用preg_replace:

$pattern = "/(?i)\b((?:https?:\/\/|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'\".,<>?«»“”‘’]))/";

$newValue = preg_replace($pattern, "", $request->twitter);

答案 2 :(得分:0)

首先,按照说明进行操作 laravel validation, custom validation 创建一个名为NotUrl的新规则,如下所示:

.as-console-wrapper { max-height: 100% !important; top: 0; }

然后像这样验证:

class NotUrl implements Rule
{   
   public function passes($attribute, $value)
   {
      return !filter_var($value, FILTER_VALIDATE_URL);
   }

   public function message()
   {
      return 'The :attribute must not be a complete URL.';
   }
}