Как проверить URL в PHP
Сниппет
1) Самый простой способ проверить, правильно ли сформирован адрес электронной почты - использовать функцию filter_var():
<?php
$url = 'https://wtools.io';
$validation = filter_var($url, FILTER_VALIDATE_URL, FILTER_FLAG_HOST_REQUIRED);
if ( $validation ) $output = "$url - действительный URL";
else $output = "$url не является действительным URL";
echo $output;
Фильтр FILTER_VALIDATE_URL проверяет URL.
Возможные флаги:
- FILTER_FLAG_SCHEME_REQUIRED - URL должен соответствовать RFC (например https://wtools)
- FILTER_FLAG_HOST_REQUIRED - URL должен включать имя хоста (например https://wtools.io)
- FILTER_FLAG_PATH_REQUIRED - URL должен иметь путь после имени домена (например wtools.io/php-snippets/)
- FILTER_FLAG_QUERY_REQUIRED - URL должен содержать строку запроса (например wtools.io?name=Peter&age=37)
2) Если вы хотите узнать, действительно ли существует URL-адрес (через CURL):
function urlExist($url){//se passar a URL existe
$c=curl_init();
curl_setopt($c,CURLOPT_URL,$url);
curl_setopt($c,CURLOPT_HEADER,1);
curl_setopt($c,CURLOPT_NOBODY,1);
curl_setopt($c,CURLOPT_RETURNTRANSFER,1);
curl_setopt($c,CURLOPT_FRESH_CONNECT,1);
if(!curl_exec($c)){
return false;
}else{
return true;
}
}
$url = 'https://wtools.io';
if ( urlExist($url) ) $output = "$url - действительный URL";
else $output = "$url не является действительным URL";
echo $output;
3) Проверить через регулярное выражение с http или https:
<?php
$url = 'https://wtools.io';
$pattern = '/^(http|https):\/\/(([A-Z0-9][A-Z0-9_-]*)(\.[A-Z0-9][A-Z0-9_-]*)+)(?::\d{1,5})?(?:$|[?\/#])/i';
if (preg_match($pattern, $url)) {
$output = "$url - действительный URL";
} else {
$output = "$url не является действительным URL";
}
echo $output;
Похожие снипеты