在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中正确检查网址,此验证不是网址的最佳验证
答案 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的一部分。
似乎没有为此验证器方法提供任何替代方法或说不需要协议的方法。因此,自定义正则表达式再次成为最佳选择。如果您计划在多个地方使用它,可能需要考虑创建自己的自定义验证规则,请参阅docs了解详细信息。