2016-12-06 84 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