如何使用正则表达式检测不同格式的 URL?

Susan Sarandon
发布: 2024-10-22 08:45:30
原创
565 人浏览过

How to Detect URLs of Varying Formats Using Regular Expressions?

使用正则表达式检测不同格式的 URL

正则表达式提供了一种从复杂字符串(包括 URL)中提取数据的强大方法。无论您是否使用包含“http://www”前缀的 URL,全面的正则表达式都可以满足您的需求。

以下表达式经过精心设计,可匹配带或不带“http”的 URL ://www" 前缀:

((https?|ftp)://)?([a-z0-9+!*(),;?&=$_.-]+(:[a-z0-9+!*(),;?&=$_.-]+)?@)?([a-z0-9\-\.]*)\.(([a-z]{2,4})|([0-9]{1,3}\.([0-9]{1,3})\.([0-9]{1,3})))(:[0-9]{2,5})?(/([a-z0-9+$_%-]\.?)+)*/?(\?[a-z+&$_.-][a-z0-9;:@&%=+/$_.-]*)?(#[a-z_.-][a-z0-9+$%_.-]*)?
登录后复制

此表达式包含以下组件:

  • 方案:"(https?|ftp)://"
  • 用户名和密码: "([a-z0-9 !*(),;?&=$_.-] (:[a-z0-9 !*(),;?&=$_.-] )?@)"
  • 主机或 IP 地址:"([a-z0-9-.]*).(([a-z]{2,4})|([0-9]{1 ,3}.([0-9]{1,3}).([0-9]{1,3})))"
  • 端口: "(:[0-9]{2 ,5})?"
  • 路径: "(/([a-z0-9 $_%-].?) )*/?"
  • GET 查询: "(?a-z &$_.-*)?"
  • 锚: "(#a-z_.-*)?"

要使用此表达式,您可以使用下面的 PHP 代码:

if(preg_match("~^$regex$~i", 'www.example.com/etcetc', $m))
    var_dump($m);

if(preg_match("~^$regex$~i", 'http://www.example.com/etcetc', $m))
    var_dump($m);
登录后复制

无论是否存在“http://www”前缀,此代码都会成功匹配两个 URL。

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

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