Сопоставление 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-адресов, а также защищать от потенциально вредоносного ввода, содержащего такие символы, как «/».
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3