PHP 正则匹配所有href链接
时间:2023年10月04日
/来源:网络
/编辑:佚名
在 HTML 中,链接通常以 <a> 标签的形式出现,其 href 属性表示链接的地址。你可以使用正则表达式来匹配 <a> 标签,并提取其中的 href 属性值。以下是一个示例正则表达式:
$pattern = '/<a\s[^>]*href=([\'"])(.*?)\1[^>]*>/i';
该正则表达式匹配所有 <a> 标签,并提取其中的 href 属性值。其中,([\'"]) 表示匹配引号(单引号或双引号),\1 表示引用第一个捕获组(即匹配的引号),(.*?) 表示非贪婪匹配任意字符,直到遇到下一个引号。
下面是一个示例代码:
// 获取目标 URL 的 HTML 内容
$html = file_get_contents('https://example.com');
// 匹配所有链接
$pattern = '/<a\s[^>]*href=([\'"])(.*?)\1[^>]*>/i';
if (preg_match_all($pattern, $html, $matches)) {
// 提取链接地址
$links = $matches[2];
foreach ($links as $link) {
echo $link . '<br>';
}
} else {
echo '没有找到链接';
}
在上述代码中,我们首先获取目标 URL 的 HTML 内容,然后使用正则表达式匹配其中的所有链接。如果匹配成功,则从匹配结果中提取链接地址并输出。否则,输出“没有找到链接”。
$pattern = '/<a\s[^>]*href=([\'"])(.*?)\1[^>]*>/i';
该正则表达式匹配所有 <a> 标签,并提取其中的 href 属性值。其中,([\'"]) 表示匹配引号(单引号或双引号),\1 表示引用第一个捕获组(即匹配的引号),(.*?) 表示非贪婪匹配任意字符,直到遇到下一个引号。
下面是一个示例代码:
// 获取目标 URL 的 HTML 内容
$html = file_get_contents('https://example.com');
// 匹配所有链接
$pattern = '/<a\s[^>]*href=([\'"])(.*?)\1[^>]*>/i';
if (preg_match_all($pattern, $html, $matches)) {
// 提取链接地址
$links = $matches[2];
foreach ($links as $link) {
echo $link . '<br>';
}
} else {
echo '没有找到链接';
}
在上述代码中,我们首先获取目标 URL 的 HTML 内容,然后使用正则表达式匹配其中的所有链接。如果匹配成功,则从匹配结果中提取链接地址并输出。否则,输出“没有找到链接”。
新闻资讯 更多
- 【建站知识】查询nginx日志状态码大于400的请求并打印整行04-03
- 【建站知识】Python中的logger和handler到底是个什么?04-03
- 【建站知识】python3拉勾网爬虫之(您操作太频繁,请稍后访问)04-03
- 【建站知识】xpath 获取meta里的keywords及description的方法04-03
- 【建站知识】python向上取整以50为界04-03
- 【建站知识】scrapy xpath遇见乱码解决04-03
- 【建站知识】scrapy爬取后中文乱码,解决word转为html 时cp1252编码问题04-03
- 【建站知识】scrapy采集—爬取中文乱码,gb2312转为utf-804-03