PHP: различные методы проверки наличия в строке URL-адреса

В PHP часто встречаются ситуации, когда вам необходимо проверить, содержит ли строка URL-адрес. Независимо от того, проверяете ли вы вводимые пользователем данные, анализируете контент или выполняете анализ данных, крайне важно иметь эффективные методы обнаружения URL-адресов в строках. В этой статье мы рассмотрим различные подходы для достижения этой цели, а также приведем примеры кода.

Метод 1: использование strpos()
Функция strpos() позволяет нам найти позицию первого вхождения подстроки в строку. Мы можем использовать эту функцию для обнаружения URL-адресов путем поиска распространенных протоколов URL-адресов, таких как «http://» или «https://».

function containsUrlUsingStrpos($string) {
    $protocols = array('http://', 'https://');

    foreach ($protocols as $protocol) {
        if (strpos($string, $protocol) !== false) {
            return true;
        }
    }

    return false;
}
// Usage
$string = "Check out this website: https://www.example.com";
if (containsUrlUsingStrpos($string)) {
    echo "String contains a URL.";
} else {
    echo "String does not contain a URL.";
}

Метод 2: использование parse_url()
Функция parse_url() в PHP может извлекать различные компоненты из строки URL. Используя эту функцию, мы можем проверить, содержит ли строка действительный URL-адрес, попытавшись проанализировать ее и проверить, существует ли компонент «схема».

function containsUrlUsingParseUrl($string) {
    $urlComponents = parse_url($string);

    return isset($urlComponents['scheme']);
}
// Usage
$string = "Check out this website: https://www.example.com";
if (containsUrlUsingParseUrl($string)) {
    echo "String contains a URL.";
} else {
    echo "String does not contain a URL.";
}

Метод 3: регулярные выражения
Регулярные выражения предоставляют гибкий и мощный способ сопоставления шаблонов в строках. Мы можем использовать регулярное выражение для более точной идентификации URL-адресов в строке.

function containsUrlUsingRegex($string) {
    $pattern = '/\b(?:https?|ftp):\/\/\S+/i';

    return preg_match($pattern, $string);
}
// Usage
$string = "Check out this website: https://www.example.com";
if (containsUrlUsingRegex($string)) {
    echo "String contains a URL.";
} else {
    echo "String does not contain a URL.";
}

В этой статье мы рассмотрели различные методы проверки того, содержит ли строка URL-адрес в PHP. Мы обсудили использование таких функций, как strpos(), parse_url() и регулярных выражений. В зависимости от ваших конкретных требований вы можете выбрать метод, который наилучшим образом соответствует вашим потребностям. Используя эти методы, вы можете эффективно обнаруживать URL-адреса в строках и обрабатывать их соответствующим образом.