Laravel返回错误网址的真实验证

时间:2015-12-15 09:30:27

标签: laravel laravel-validation

在laravel中我想查看简单的URL,例如:

http://www.google.com
http://google.com
www.google.com
http://www.google.com
http://www.google

遗憾的是laravel验证码为

['redirect_url' => 'required|url']

为此网址返回false

www.google.com

并为http://www.google地址返回true,如何在laravel中正确检查网址,此验证不是网址的最佳验证

3 个答案:

答案 0 :(得分:4)

您可以使用regex验证规则进行网址验证

 ['redirect_url' => ['required','regex:/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i']]

答案 1 :(得分:1)

在验证之前,使用以下代码检查字符串是否包含http://https://

if(!(starts_with($url, "http://") || starts_with($url, "https://")) {
        $url = "http://".$url;
}

函数starts_with()是Laravel的辅助函数。 http://www.w3.org/2001/XMLSchema-instance

答案 2 :(得分:0)

Jay Dhameliya提供的正则表达式解决方案可能是您的方案中最好的解决方案,但我只是想我会解释为什么url验证器不能按预期工作。

如果您查看illuminate / validation / Validator validateURL function,则需要将以下内容指定为URL的一部分。

  • 协议(http / https / etc)
  • 可选的基本身份验证
  • 域名或IP地址
  • 可选端口
  • 尾随/或没有/或/后跟其他东西

似乎没有为此验证器方法提供任何替代方法或说不需要协议的方法。因此,自定义正则表达式再次成为最佳选择。如果您计划在多个地方使用它,可能需要考虑创建自己的自定义验证规则,请参阅docs了解详细信息。