Як перевірити URL у PHP

Сніппет

1) Найпростіший спосіб перевірити, чи правильно сформована адреса електронної пошти – використовувати функцію filter_var():

downloadcopy
<?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):

downloadcopy
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:

downloadcopy
<?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;