我爱自学

 找回密码
 会员注册

QQ登录

只需一步,快速开始

PHP中如何使用正则表达式抓取a标签的内容

php学习过程中进行网页采集时,有时需要获取html标签之间的输出内容。本文小编分享通过正则表达式获取a标签的内容。



如下图所示,我爱自学小编通过正则表达式获取了下方所示的源码。那么如何获取a标签中“内容1”和“内容2”的值呢!


<ul>
<li><a href="http://xxxxx/2022-11-18/207122075.html"  target="_blank">内容1</a></li>
<li><a href="http://xxxxx/2022-11-18/207122076.html"  target="_blank">内容2</a></li>
</ul>




解决方法一,通过正则表达式的子模式功能

这里需要了解正则匹配的子模式功能:正则表达式中,可以使用“(”和“)”将模式中的子字符串括起来,以形成一个子模式。将子模式视为一个整体时,那么它就相当于一个单个字符。比如:正则表达式 /<b>(.*)</b>/,可以匹配内容:<b>内容1</b>,其中内容1就是表达式中(.*)对应的内容。(.*)匹配的内容就是这个正则表达式的子组。

$subject = '<a href="http://xxxxx/2022-11-18/207122076.html"  target="_blank">内容2</a>';

$pattern = '/<a[^>]*>(.*)<\/a>/i';    // 这是匹配的正则表达式,“(”和“)”匹配的内容,是子组匹配模式

preg_match_all($pattern, $subject, $matches);    //  开始匹配,该函数会把匹配结果放入 $matches数组中,$matches[0]保存完整模式的所有匹配, $matches[1] 保存第一个子组的所有匹配,以此类推。

print_r($matches[1]);

实现方法二:如果不理解正则的子模式,可以使用正则匹配后截取字符的方式

$subject = '<a href="http://xxxxx/2022-11-18/207122076.html"  target="_blank">内容2</a>';

$pattern = '/>.*</i';    // 这是匹配的正则表达式获取包含“>链接内容<”的内容

preg_match_all($pattern, $subject, $matches);    //

print_r(substr($matches[0][0],1,7));

推荐使用方法一

点击阅读更多内容!
如果您觉得文章内容帮助到了您,不妨点点感兴趣的广告。感谢您的支持!

微信扫一扫打赏

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

手机版|小黑屋|我爱自学 ( 蜀ICP备19015358号-3 )

GMT+8, 2024-4-26 08:36 , Processed in 0.086987 second(s), 53 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

本站大部分教程是网站原创教程,一部分教程为我爱自学(http://www.5izixue.com)编辑收集整理。

如果您需要转载我爱自学网站教程,请注明“资料来源:我爱自学(5izixue)”字样并注明本站网址。

编辑收集整理的教程版权归原作者所有,本站只提供网友交流学习使用,请勿用于商业用途,如果该文章有任何侵犯您权益的地方,请联系我们(569705694@qq.com),我们将在第一时间进行处理!谢谢您的支持!

快速回复 返回顶部 返回列表