Intereting Posts
Неизвестная ошибка модификатора 'l' Как проверить Cookie Token против bcrypt-хэшированного токена в БД при использовании Persistent Login Cookies? PHP – ftp_put не удалось открыть поток? Система входа в PHP с использованием Cookies и соленых хешей Symfony 3 – Вы запросили несуществующий сервис, который сводит меня с ума 1000+ вызовов API с 1 cron-заданием? Как получить заголовки из последнего перенаправления с функциями curl PHP? как я могу использовать imagick в php? (изменение размера и урожая) Невозможно использовать завихрение PHP на свободном уровне amazon ec2 сортировать массив на основе dateTime в php Почему PDO_MySQL не возвращает целое число? Laravel – ввод формы – множественный выбор для отношения одного к другому Как получить целое число из одной даты в другую в PHP Условный запрос в elasticsearch Используя PHP или JavaScript Facebook SDK, как я могу заставить пользователя войти на мой сайт?

parsing url – php, проверить, существует ли схема, проверить правильность URL-адреса

Это хороший способ проверить опубликованный URL?

if (filter_var($_POST['url'], FILTER_VALIDATE_URL)){ echo "valid url"; }else{ echo "invalid url"; } 

Это то, что я написал для начала, поскольку я мог показывать с ним несколько сообщений об ошибках:

 function validateURL($url) { $pattern = '/^(([\w]+:)?\/\/)?(([\d\w]|%[a-fA-f\d]{2,2})+(:([\d\w]|%[a-fA-f\d]{2,2})+)?@)?([\d\w][-\d\w]{0,253}[\d\w]\.)+[\w]{2,4}(:[\d]+)?(\/([-+_~.\d\w]|%[a-fA-f\d]{2,2})*)*(\?(&?([-+_~.\d\w]|%[a-fA-f\d]{2,2})=?)*)?(#([-+_~.\d\w]|%[a-fA-f\d]{2,2})*)?$/'; return preg_match($pattern, $url); } $result = validateURL($_POST['url']); if ($result == "1"){ $scheme = parse_url($_POST['url'], PHP_URL_SCHEME); if (isset($scheme)){ echo $scheme . "://" . parse_url($_POST['url'], PHP_URL_HOST); }else{ echo "error you did not enter http://"; } }else{ echo "your url is not a valid format"; } 

Я бы просто пошел за встроенным FILTER_VALIDATE_URL и использовал общее сообщение об ошибке вроде:

Неверная ссылка. Не забудьте также ввести http:// .

Если вы хороши, вы можете проверить, есть ли первые 7/8 буквы: http:// или https:// и добавьте их, если нет.

Придумывание и поддержание такого RegEx – это не то, что вам нужно, если проблема уже решена. В сообщении об ошибке также нет необходимости более подробно описывать, если вы не собираетесь объяснять форматы URL-адресов.

Вы проверили это Кайл, http://phpcentral.com/208-url-validation-in-php.html

Я думаю, что просто

 filter_var($var, FILTER_VALIDATE_URL) 

и проверка протокола strpos () достаточно, потому что пользователь может, если захочет, дать вам неправильный (который не существует) url.

Конечно, вы можете проверить, существует ли домен и вернуть действительный статус http, но я думаю, что это немного завышено.