Tips:点此可运行HTML源码

php获取页面所有链接的正则表达式

php获取页面所有链接的正则表达式

复制代码
$pattern = '/<a(?:.*?)href="(((?:http(?:s?):\/\/)?([^\"\/]+))?(?:[^\"]*))"(?:[^>]*?)>([^<]*?)<\/a>/i';
preg_match_all($pattern, $data, $links);
$links[0]是所有<a>标签。
$links[1]是所有href。
$links[2]是所有带http(s)://链接。
$links[3]是所有域名,如:www.cnblogs.com。
$links[4]是所有a标签内容。
直接获取<a>标签:$pattern = '/<a.*?<\/a>/i';
仅获取href数据:$pattern = '/<a(?:.*?)href=[\'"]([^\"\']*)[\'"][^<]*?<\/a>/i';        //仅href

单双引号,href前换行,href后等号前后夹杂空格,a标签内嵌标签等一堆情况解决方案:
$pattern = '/<a(?:[\s\S]*?)href\s*?=\s*?[\'"](((?:http(?:s?):\/\/)?([^\"\'\/]+))?(?:[^\"\']*))[\'"](?:[^>]*?)>([\s\S]*?)<\/a>/i';
复制代码

演示网址:phpParseLinks

修改:上面pattern中新增?,红色标记。修复无http://与域名情况。

posted @   Zjmainstay  阅读(1931)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示