2016-12-06 125 views
0

我试图在同一时间,我想确保它在数据库中唯一来验证laravel一个URL,所以我用这个:Laravel 5.2唯一的URL验证

'url' => 'required|unique:table,url|url', 

这是很好,因为它确保网址: 1)。需要 2)。 url是独一无二的 3)。这里的问题是:::甲酸为http://www.example.comhttp://example.comhttps://www.example.comhttp://www.example.com/test等。一切都将通过验证...

我怎样才能使它如果有人进入:任何的这些例子(http://www.example.comhttp://example.comhttps://www.example.com)会出现错误,因为“example.com”是一样的吗?甚至子域dev.example.com我想要给他错误,因为example.com在那里?

我可以修改我的过滤器吗?

感谢

+0

没有直接的方式实现这一目标,你应该先把主域名(即example.com)。你可以使用explode()。然后在验证器数组中使用它。 –

回答

0

你可以得到比如像这样的主机名:

if (starts_with(Request::root(), 'http://')) 
{ 
    $domain = substr (Request::root(), 7); // $domain is now 'www.example.com' 
} 

,或者尝试使用正则表达式表达式验证:

单一的正则表达式来解析和分手全URL包括查询 参数和锚点,例如

^((http [s]?| ftp):/)?/?([^:/ \ s] +)((/ \ w +)/)([\w-.]+[^ ?#\ S] +)()(#[\ W - ] +)$

RexEx位置:?

网址:正则表达式[ '$ &'],

协议: 。正则表达式$ 2,

主持人:正则表达式$ 3

路径:。正则表达式$ 4

文件:正则表达式$ 6

查询:。正则表达式$ 7,

哈希:正则表达式$ 8

+0

谢谢,这很有帮助 – user3150060