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

Patricia Arquette
发布: 2024-10-22 08:45:03
原创
328 人浏览过

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中文网其他相关文章!

来源:php
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!