请选择 进入手机版 | 继续访问电脑版

我爱自学

 找回密码
 会员注册

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, 2022-12-6 01:34 , Processed in 0.052422 second(s), 51 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

本站部分资源来源网络,仅供学习与交流使用,如果侵犯到您的权益,请及时联系本站(569705694@qq.com)删除该资源。

X
淘宝聚划算
快速回复 返回顶部 返回列表