«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как сопоставить URL-адреса с помощью регулярных выражений?

Как сопоставить URL-адреса с помощью регулярных выражений?

Опубликовано 10 ноября 2024 г.
Просматривать:487

How to Match URLs Using Regular Expressions?

Сопоставление URL-адресов с регулярными выражениями

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

Одно надежное регулярное выражение, которое может захватывать URL-адреса с ведущими протоколами или без них (например, «http://www» или « www") это:

((https?|ftp)://)? // Optional SCHEME
([a-z0-9 !*(),;?&=$_.-] (:[a-z0-9 !*(),;?&=$_.-] )?@)? // Optional User and Pass
([a-z0-9\-\.]*)\.(([a-z]{2,4})|([0-9]{1,3}\.([0-9]{1,3})\.([0-9]{1,3}))) // Host or IP address
(:[0-9]{2,5})? // Optional Port
(/([a-z0-9 $_%-]\.?) )*/? // Path
(\?[a-z &\$_.-][a-z0-9;:@&%= /$_.-]*)? // Optional GET Query
(#[a-z_.-][a-z0-9 $%_.-]*)? // Optional Anchor

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

$url = 'www.example.com/etcetc';
if (preg_match("~^$regex$~i", $url)) {
    echo 'Matched URL without protocol';
}

Аналогично для URL-адресов с протоколами:

$url = 'http://www.example.com/etcetc';
if (preg_match("~^$regex$~i", $url)) {
    echo 'Matched URL with protocol';
}

Этот шаблон должен охватывать широкий спектр форматов URL-адресов, а также защищать от потенциально вредоносного ввода, содержащего такие символы, как «/».

Заявление о выпуске Эта статья перепечатана по адресу: 1729557858. В случае каких-либо нарушений, пожалуйста, свяжитесь с [email protected], чтобы удалить ее.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3