Я провел некоторое исследование по проверке URL-адресов на PHP и обнаружил, что существует много разных ответов на StackOverflow, некоторые лучше других, а некоторые очень старые и устаревшие.
У меня есть поле, где пользователи могут вводить URL своего сайта. Пользователь должен иметь возможность вводить URL-адрес в любой форме, например:
example.com www.example.com http://example.com http://www.example.com https://example.com https://www.example.com
PHP имеет функцию проверки правильности URL-адресов , однако он помечает URL как недействительный, если у него нет http://
.
Как я могу проверить какой-либо URL-адрес, с или без http://
или https://
, чтобы убедиться, что URL-адрес действителен?
Благодарю.
Используйте filter_var()
как вы заявили, однако по определению URL должен содержать протокол:
$url = strpos($url, 'http') !== 0 ? "http://$url" : $url;
Затем:
if(filter_var($url, FILTER_VALIDATE_URL)) { //valid } else { //not valid }
Я также видел, что это использовалось:
$url = "http://example.com"; if (preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i", $url)) { echo "URL is valid"; } else { echo "URL is invalid"; }
Вы также можете позволить html проверить URL-адрес:
Website: <input type="url" name="website" required pattern="https?://.+">