Laravel 5.2唯一的URL验证

时间:2016-12-06 21:59:55

标签: php regex laravel-5

我想在laravel中验证一个URL,同时我想确保它在数据库中的唯一性,所以我使用它:

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

这很好,因为它确保了网址: 1)。需要 2)。网址是独一无二的 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在那里?

我可以修改过滤器吗?

由于

1 个答案:

答案 0 :(得分:0)

您可以获取主机名,例如:

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

或尝试使用regex表达式进行验证:

  

单个正则表达式,用于解析和分解包含查询的完整URL   参数和锚点,例如

     

^((HTTP [S] | FTP):/?)?/([^:/ \ S] +)((/ \ W +)的 /)([\ W - ] + [ ?^#\ S] +)()(#[\瓦特 - ?] +)$

     

RexEx职位:

     

url:RegExp [' $&'],

     

协议:正则表达式$ 2,

     

主机:正则表达式$ 3

     

路径:正则表达式$ 4

     

文件:正则表达式$ 6

     

查询:正则表达式$ 7,

     

散列:正则表达式$ 8