Как проверить URL в laravel, используя правило проверки - PullRequest
0 голосов
/ 05 ноября 2019

Я хочу проверить адрес веб-сайта с помощью функции php validate url, но я не знаю, как этого добиться. Кстати, я пытался таким образом, но это не работает.

$url=filter_var($request->website, FILTER_VALIDATE_URL);
'website' => 'required|same:,'.$url

, если кто-то может мне помочь, было бы здорово.

Ответы [ 2 ]

1 голос
/ 05 ноября 2019

Вы можете использовать url валидатор от Laravel

https://laravel.com/docs/5.8/validation#rule-url

'website' => 'required|url'

Или, если вы хотите построить более точное правило, естьнесколько способов сделать это. Вот один из них, самый простой на мой взгляд:

В вашем AppServiceProvider@boot:

Validator::extend('website', function ($attribute, $value, $parameters, $validator) {
  // validation logic, e.g
  return filter_var($value, FILTER_VALIDATE_URL);
});

И затем используйте ваше правило в списке валидаторов:

'website' => ['required', 'website'],

Здесь все объяснено: https://laravel.com/docs/5.8/validation#custom-validation-rules

0 голосов
/ 05 ноября 2019

Laravel использует filter_var() с опцией FILTER_VALIADTE_URL, которая не допускает умлаутов. Вы можете написать собственный валидатор или использовать правило валидации регулярных выражений в сочетании с регулярным выражением.

$regex ="/((([A-Za-z]{3,9}:(?:\/\/)?)(?:[-;:&=\+\$,\w]+@)?[A-Za-z0-9.-]+|(?:www.|[-;:&=\+\$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?(?:[\w]*))?)/";

// specify the rules as array to avoid problems with special characters:  
"website" => array("required", "regex:".$regex)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...