首页  >  文章  >  后端开发  >  如何使用正则表达式匹配URL?

如何使用正则表达式匹配URL?

Patricia Arquette
Patricia Arquette原创
2024-10-22 08:45:03333浏览

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 中使用此表达式,请将其用双引号括起来,并将其与要计算的 URL 一起传递给 preg_match 函数。例如:

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

同样,对于具有协议的 URL:

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

此模式应涵盖广泛的 URL 格式,同时还可以防止包含“”等字符的潜在恶意输入/”。

以上是如何使用正则表达式匹配URL?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn