我想在laravel中验证一个URL,同时我想确保它在数据库中的唯一性,所以我使用它:
'url' => 'required|unique:table,url|url',
这很好,因为它确保了网址: 1)。需要 2)。网址是独一无二的 3)。这是问题:::格式为http://www.example.com或http://example.com或https://www.example.com或http://www.example.com/test等。所有这些都将通过验证...
如果有人输入,我该怎么做?以下任何一个例子(http://www.example.com或http://example.com或https://www.example.com)都会出错,因为“example.com”是相同的?甚至子域dev.example.com我希望那个给他错误,因为example.com在那里?
我可以修改过滤器吗?
由于
答案 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